//------------- // C Headers -- //------------- #include //--------------- // C++ Headers -- //--------------- #include //------------------------------- // Collaborating Class Headers -- //------------------------------- #include "CalorObjects/ScStripSet.hh" #include "RawDataBanks/CESD_StorableBank.hh" #include "BaBar/Cdf.hh" #include "AbsEnv/AbsEnv.hh" #include "StripChamberGeometry/CdfScWedge.hh" #include "StripChamberGeometry/ScWedgeCode.hh" //---------------- // Constructors -- //---------------- ScStripSet::ScStripSet( AbsEvent* anEvent) { EventRecord::ConstIterator bankIter(anEvent,"CESD_StorableBank"); if(bankIter.is_valid() ) { int i_ew = 0; ConstHandle cesdBank(bankIter); for (CESD_StorableBank::ConstGrandBankIter data_iter(cesdBank); data_iter.is_valid(); data_iter++) { int blockind = data_iter.block_index(); // The following code compiles, but I am not // sure if it is really correct. I mean this // start_word() part. - ikrav int type = cesdBank->get_strip(data_iter); int number = cesdBank->get_stripNo(data_iter); int module = cesdBank->get_module(data_iter); int energy = cesdBank->get_data(data_iter); if (blockind>7) { i_ew = 1; } // Create the space if it doesn't exist. ScWedgeCode c(i_ew,module); std::vector & myStripVector = _stripVector[c]; std::vector & myWireVector = _wireVector[c]; // float GeV_to_ADC = 699.3007; // float fl_energy = float(energy)/GeV_to_ADC; if (type == 0) { ScStrip strip; strip.setPulseHeight(energy); strip.setStripNo(number); strip.setModule(module); strip.setSide(i_ew); myStripVector.push_back(strip); } if (type == 1) { ScWire wire; wire.setPulseHeight(energy); wire.setWireNo(number); wire.setModule(module); wire.setSide(i_ew); myWireVector.push_back(wire); } } } } //-------------- // Destructor -- //-------------- ScStripSet::~ScStripSet( ) { } //-------------- // Operations -- //-------------- int ScStripSet::nStrips(const CdfScWedge* wedge) const { ScWedgeCode c = wedge->getDetectorCode(); return _stripVector[c].size(); } int ScStripSet::nWires(const CdfScWedge* wedge) const { ScWedgeCode c = wedge->getDetectorCode(); return _wireVector[c].size(); } ScStrip ScStripSet::get_strip(const CdfScWedge* wedge, int j) const { ScWedgeCode c = wedge->getDetectorCode(); return _stripVector[c][j]; } ScWire ScStripSet::get_wire(const CdfScWedge* wedge, int j) const { ScWedgeCode c = wedge->getDetectorCode(); return _wireVector[c][j]; }