![]() |
![]() |
#include <SimCalorimetry/CaloSimAlgos/interface/CaloTDigitizer.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 | |
void | addNoiseHits () |
void | addNoiseSignals () |
CaloTDigitizer (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 | |
void | setNoiseHitGenerator (CaloVNoiseHitGenerator *generator) |
void | setNoiseSignalGenerator (CaloVNoiseSignalGenerator *generator) |
~CaloTDigitizer () | |
doesn't delete the pointers passed in | |
Private Attributes | |
bool | addNoise_ |
std::vector< DetId > | theDetIds |
ElectronicsSim * | theElectronicsSim |
CaloHitResponse * | theHitResponse |
CaloVNoiseHitGenerator * | theNoiseHitGenerator |
CaloVNoiseSignalGenerator * | theNoiseSignalGenerator |
Assumes that there's an ElectroncsSim class with the interface analogToDigital(const CaloSamples &, Digi &);
Definition at line 17 of file CaloTDigitizer.h.
typedef Traits::Digi CaloTDigitizer< Traits >::Digi |
Definition at line 24 of file CaloTDigitizer.h.
typedef Traits::DigiCollection CaloTDigitizer< Traits >::DigiCollection |
Definition at line 25 of file CaloTDigitizer.h.
typedef Traits::ElectronicsSim CaloTDigitizer< 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 CaloTDigitizer.h.
CaloTDigitizer< Traits >::CaloTDigitizer | ( | CaloHitResponse * | hitResponse, | |
ElectronicsSim * | electronicsSim, | |||
bool | addNoise | |||
) | [inline] |
Definition at line 27 of file CaloTDigitizer.h.
00028 : theHitResponse(hitResponse), 00029 theNoiseHitGenerator(0), 00030 theNoiseSignalGenerator(0), 00031 theElectronicsSim(electronicsSim), 00032 theDetIds(0), 00033 addNoise_(addNoise) 00034 { 00035 }
CaloTDigitizer< Traits >::~CaloTDigitizer | ( | ) | [inline] |
void CaloTDigitizer< Traits >::addNoiseHits | ( | ) | [inline] |
Definition at line 95 of file CaloTDigitizer.h.
References CaloHitResponse::add(), CaloVNoiseHitGenerator::getNoiseHits(), CaloTDigitizer< Traits >::theHitResponse, and CaloTDigitizer< Traits >::theNoiseHitGenerator.
Referenced by CaloTDigitizer< Traits >::run().
00096 { 00097 std::vector<PCaloHit> noiseHits; 00098 theNoiseHitGenerator->getNoiseHits(noiseHits); 00099 for(std::vector<PCaloHit>::const_iterator hitItr = noiseHits.begin(), 00100 hitEnd = noiseHits.end(); hitItr != hitEnd; ++hitItr) 00101 { 00102 theHitResponse->add(*hitItr); 00103 } 00104 }
void CaloTDigitizer< Traits >::addNoiseSignals | ( | ) | [inline] |
Definition at line 106 of file CaloTDigitizer.h.
References CaloHitResponse::add(), CaloVNoiseSignalGenerator::getNoiseSignals(), CaloTDigitizer< Traits >::theHitResponse, and CaloTDigitizer< Traits >::theNoiseSignalGenerator.
Referenced by CaloTDigitizer< Traits >::run().
00107 { 00108 std::vector<CaloSamples> noiseSignals; 00109 // noise signals need to be in units of photoelectrons. Fractional is OK 00110 theNoiseSignalGenerator->getNoiseSignals(noiseSignals); 00111 for(std::vector<CaloSamples>::const_iterator signalItr = noiseSignals.begin(), 00112 signalEnd = noiseSignals.end(); signalItr != signalEnd; ++signalItr) 00113 { 00114 theHitResponse->add(*signalItr); 00115 } 00116 }
void CaloTDigitizer< Traits >::run | ( | MixCollection< PCaloHit > & | input, | |
DigiCollection & | output | |||
) | [inline] |
turns hits into digis
Definition at line 56 of file CaloTDigitizer.h.
References CaloTDigitizer< Traits >::addNoise_, CaloTDigitizer< Traits >::addNoiseHits(), CaloTDigitizer< Traits >::addNoiseSignals(), CaloHitResponse::clear(), CaloHitResponse::findSignal(), CaloHitResponse::makeBlankSignal(), CaloHitResponse::nSignals(), CaloHitResponse::run(), CaloTDigitizer< Traits >::theDetIds, CaloTDigitizer< Traits >::theElectronicsSim, CaloTDigitizer< Traits >::theHitResponse, CaloTDigitizer< Traits >::theNoiseHitGenerator, and CaloTDigitizer< Traits >::theNoiseSignalGenerator.
Referenced by HcalDigiProducer::produce(), EcalDigiProducer::produce(), HcalTBDigiProducer::produce(), and CastorDigiProducer::produce().
00056 { 00057 assert(theDetIds.size() != 0); 00058 00059 theHitResponse->run(input); 00060 00061 if(theNoiseHitGenerator != 0) addNoiseHits(); 00062 if(theNoiseSignalGenerator != 0) addNoiseSignals(); 00063 theElectronicsSim->newEvent(); 00064 00065 // reserve space for how many digis we expect 00066 int nDigisExpected = addNoise_ ? theDetIds.size() : theHitResponse->nSignals(); 00067 output.reserve(nDigisExpected); 00068 00069 // make a raw digi for evey cell 00070 for(std::vector<DetId>::const_iterator idItr = theDetIds.begin(); 00071 idItr != theDetIds.end(); ++idItr) 00072 { 00073 Digi digi(*idItr); 00074 CaloSamples * analogSignal = theHitResponse->findSignal(*idItr); 00075 bool needToDeleteSignal = false; 00076 // don't bother digitizing if no signal and no noise 00077 if(analogSignal == 0 && addNoise_) { 00078 // I guess we need to make a blank signal for this cell. 00079 // Don't bother storing it anywhere. 00080 analogSignal = new CaloSamples(theHitResponse->makeBlankSignal(*idItr)); 00081 needToDeleteSignal = true; 00082 } 00083 if(analogSignal != 0) { 00084 theElectronicsSim->analogToDigital(*analogSignal , digi); 00085 output.push_back(digi); 00086 if(needToDeleteSignal) delete analogSignal; 00087 } 00088 } 00089 00090 // free up some memory 00091 theHitResponse->clear(); 00092 }
void CaloTDigitizer< Traits >::setDetIds | ( | const std::vector< DetId > & | detIds | ) | [inline] |
tell the digitizer which cells exist
Definition at line 42 of file CaloTDigitizer.h.
References CaloTDigitizer< Traits >::theDetIds.
Referenced by CastorDigiProducer::checkGeometry(), HcalDigiProducer::checkGeometry(), HcalTBDigiProducer::updateGeometry(), and EcalDigiProducer::updateGeometry().
00042 {theDetIds = detIds;}
void CaloTDigitizer< Traits >::setNoiseHitGenerator | ( | CaloVNoiseHitGenerator * | generator | ) | [inline] |
Definition at line 44 of file CaloTDigitizer.h.
References CaloTDigitizer< Traits >::theNoiseHitGenerator.
00045 { 00046 theNoiseHitGenerator = generator; 00047 }
void CaloTDigitizer< Traits >::setNoiseSignalGenerator | ( | CaloVNoiseSignalGenerator * | generator | ) | [inline] |
Definition at line 49 of file CaloTDigitizer.h.
References CaloTDigitizer< Traits >::theNoiseSignalGenerator.
Referenced by HcalDigiProducer::HcalDigiProducer().
00050 { 00051 theNoiseSignalGenerator = generator; 00052 }
bool CaloTDigitizer< Traits >::addNoise_ [private] |
std::vector<DetId> CaloTDigitizer< Traits >::theDetIds [private] |
Definition at line 123 of file CaloTDigitizer.h.
Referenced by CaloTDigitizer< Traits >::run(), and CaloTDigitizer< Traits >::setDetIds().
ElectronicsSim* CaloTDigitizer< Traits >::theElectronicsSim [private] |
CaloHitResponse* CaloTDigitizer< Traits >::theHitResponse [private] |
Definition at line 119 of file CaloTDigitizer.h.
Referenced by CaloTDigitizer< Traits >::addNoiseHits(), CaloTDigitizer< Traits >::addNoiseSignals(), and CaloTDigitizer< Traits >::run().
CaloVNoiseHitGenerator* CaloTDigitizer< Traits >::theNoiseHitGenerator [private] |
Definition at line 120 of file CaloTDigitizer.h.
Referenced by CaloTDigitizer< Traits >::addNoiseHits(), CaloTDigitizer< Traits >::run(), and CaloTDigitizer< Traits >::setNoiseHitGenerator().
CaloVNoiseSignalGenerator* CaloTDigitizer< Traits >::theNoiseSignalGenerator [private] |
Definition at line 121 of file CaloTDigitizer.h.
Referenced by CaloTDigitizer< Traits >::addNoiseSignals(), CaloTDigitizer< Traits >::run(), and CaloTDigitizer< Traits >::setNoiseSignalGenerator().