CMS 3D CMS Logo

CaloTDigitizer< Traits > Class Template Reference

Turns hits into digis. More...

#include <SimCalorimetry/CaloSimAlgos/interface/CaloTDigitizer.h>

List of all members.

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< DetIdtheDetIds
ElectronicsSimtheElectronicsSim
CaloHitResponsetheHitResponse
CaloVNoiseHitGeneratortheNoiseHitGenerator
CaloVNoiseSignalGeneratortheNoiseSignalGenerator


Detailed Description

template<class Traits>
class CaloTDigitizer< Traits >

Turns hits into digis.

Assumes that there's an ElectroncsSim class with the interface analogToDigital(const CaloSamples &, Digi &);

Definition at line 17 of file CaloTDigitizer.h.


Member Typedef Documentation

template<class Traits>
typedef Traits::Digi CaloTDigitizer< Traits >::Digi

Definition at line 24 of file CaloTDigitizer.h.

template<class Traits>
typedef Traits::DigiCollection CaloTDigitizer< Traits >::DigiCollection

Definition at line 25 of file CaloTDigitizer.h.

template<class Traits>
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.


Constructor & Destructor Documentation

template<class Traits>
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   }

template<class Traits>
CaloTDigitizer< Traits >::~CaloTDigitizer (  )  [inline]

doesn't delete the pointers passed in

Definition at line 39 of file CaloTDigitizer.h.

00039 {}


Member Function Documentation

template<class Traits>
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   }

template<class Traits>
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   }

template<class Traits>
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   }

template<class Traits>
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;}

template<class Traits>
void CaloTDigitizer< Traits >::setNoiseHitGenerator ( CaloVNoiseHitGenerator generator  )  [inline]

Definition at line 44 of file CaloTDigitizer.h.

References CaloTDigitizer< Traits >::theNoiseHitGenerator.

00045   {
00046     theNoiseHitGenerator = generator;
00047   }

template<class Traits>
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   }


Member Data Documentation

template<class Traits>
bool CaloTDigitizer< Traits >::addNoise_ [private]

Definition at line 124 of file CaloTDigitizer.h.

Referenced by CaloTDigitizer< Traits >::run().

template<class Traits>
std::vector<DetId> CaloTDigitizer< Traits >::theDetIds [private]

Definition at line 123 of file CaloTDigitizer.h.

Referenced by CaloTDigitizer< Traits >::run(), and CaloTDigitizer< Traits >::setDetIds().

template<class Traits>
ElectronicsSim* CaloTDigitizer< Traits >::theElectronicsSim [private]

Definition at line 122 of file CaloTDigitizer.h.

Referenced by CaloTDigitizer< Traits >::run().

template<class Traits>
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().

template<class Traits>
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().

template<class Traits>
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().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:15:58 2009 for CMSSW by  doxygen 1.5.4