#include <SimCalorimetry/EcalSimAlgos/interface/EcalTDigitizer.h>
Public Types | |
typedef Traits::Digi | Digi |
typedef Traits::DigiCollection | DigiCollection |
typedef Traits::ElectronicsSim | ElectronicsSim |
these are the types that need to be defined in the Traits class. | |
Public Member Functions | |
EcalTDigitizer (CaloHitResponse *hitResponse, ElectronicsSim *electronicsSim, bool addNoise) | |
void | run (MixCollection< PCaloHit > &input, DigiCollection &output) |
turns hits into digis | |
void | setDetIds (const std::vector< DetId > &detIds) |
tell the digitizer which cells exist | |
~EcalTDigitizer () | |
doesn't delete the pointers passed in | |
Private Attributes | |
bool | addNoise_ |
std::vector< DetId > | theDetIds |
ElectronicsSim * | theElectronicsSim |
CaloHitResponse * | theHitResponse |
Assumes that there's an ElectroncsSim class with the interface analogToDigital(const CaloSamples &, Digi &);
Definition at line 17 of file EcalTDigitizer.h.
typedef Traits::Digi EcalTDigitizer< Traits >::Digi |
Definition at line 24 of file EcalTDigitizer.h.
typedef Traits::DigiCollection EcalTDigitizer< Traits >::DigiCollection |
Definition at line 25 of file EcalTDigitizer.h.
typedef Traits::ElectronicsSim EcalTDigitizer< Traits >::ElectronicsSim |
these are the types that need to be defined in the Traits class.
The ElectronicsSim needs to have an interface that you'll see in the run() method
Definition at line 23 of file EcalTDigitizer.h.
EcalTDigitizer< Traits >::EcalTDigitizer | ( | CaloHitResponse * | hitResponse, | |
ElectronicsSim * | electronicsSim, | |||
bool | addNoise | |||
) | [inline] |
Definition at line 27 of file EcalTDigitizer.h.
00028 : theHitResponse(hitResponse), 00029 theElectronicsSim(electronicsSim), 00030 theDetIds(0), 00031 addNoise_(addNoise) 00032 { 00033 }
EcalTDigitizer< Traits >::~EcalTDigitizer | ( | ) | [inline] |
void EcalTDigitizer< Traits >::run | ( | MixCollection< PCaloHit > & | input, | |
DigiCollection & | output | |||
) | [inline] |
turns hits into digis
Definition at line 44 of file EcalTDigitizer.h.
References EcalTDigitizer< Traits >::addNoise_, CaloHitResponse::clear(), CaloHitResponse::findSignal(), CaloHitResponse::makeBlankSignal(), CaloHitResponse::nSignals(), CaloHitResponse::run(), EcalTDigitizer< Traits >::theDetIds, EcalTDigitizer< Traits >::theElectronicsSim, and EcalTDigitizer< Traits >::theHitResponse.
Referenced by EcalTBDigiProducer::produce(), and EcalDigiProducer::produce().
00044 { 00045 assert(theDetIds.size() != 0); 00046 00047 theHitResponse->run(input); 00048 00049 theElectronicsSim->newEvent(); 00050 00051 // reserve space for how many digis we expect 00052 int nDigisExpected = addNoise_ ? theDetIds.size() : theHitResponse->nSignals(); 00053 output.reserve(nDigisExpected); 00054 00055 // make a raw digi for evey cell 00056 for(std::vector<DetId>::const_iterator idItr = theDetIds.begin(); 00057 idItr != theDetIds.end(); ++idItr) 00058 { 00059 CaloSamples * analogSignal = theHitResponse->findSignal(*idItr); 00060 bool needToDeleteSignal = false; 00061 // don't bother digitizing if no signal and no noise 00062 if(analogSignal == 0 && addNoise_) { 00063 // I guess we need to make a blank signal for this cell. 00064 // Don't bother storing it anywhere. 00065 analogSignal = new CaloSamples(theHitResponse->makeBlankSignal(*idItr)); 00066 needToDeleteSignal = true; 00067 } 00068 if(analogSignal != 0) { 00069 output.push_back(*idItr); 00070 Digi digi(output.back()); 00071 theElectronicsSim->analogToDigital(*analogSignal , digi); 00072 if(needToDeleteSignal) delete analogSignal; 00073 } 00074 } 00075 00076 // free up some memory 00077 theHitResponse->clear(); 00078 }
void EcalTDigitizer< Traits >::setDetIds | ( | const std::vector< DetId > & | detIds | ) | [inline] |
tell the digitizer which cells exist
Definition at line 41 of file EcalTDigitizer.h.
References EcalTDigitizer< Traits >::theDetIds.
Referenced by EcalTBDigiProducer::updateGeometry(), and EcalDigiProducer::updateGeometry().
00041 {theDetIds = detIds;}
bool EcalTDigitizer< Traits >::addNoise_ [private] |
std::vector<DetId> EcalTDigitizer< Traits >::theDetIds [private] |
Definition at line 84 of file EcalTDigitizer.h.
Referenced by EcalTDigitizer< Traits >::run(), and EcalTDigitizer< Traits >::setDetIds().
ElectronicsSim* EcalTDigitizer< Traits >::theElectronicsSim [private] |
CaloHitResponse* EcalTDigitizer< Traits >::theHitResponse [private] |