CMS 3D CMS Logo

EcalTDigitizer< Traits > Class Template Reference

Turns hits into digis. More...

#include <SimCalorimetry/EcalSimAlgos/interface/EcalTDigitizer.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

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


Detailed Description

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


Member Typedef Documentation

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

Definition at line 24 of file EcalTDigitizer.h.

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

Definition at line 25 of file EcalTDigitizer.h.

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


Constructor & Destructor Documentation

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

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

doesn't delete the pointers passed in

Definition at line 38 of file EcalTDigitizer.h.

00038 {}


Member Function Documentation

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

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


Member Data Documentation

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

Definition at line 85 of file EcalTDigitizer.h.

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

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

Definition at line 84 of file EcalTDigitizer.h.

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

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

Definition at line 83 of file EcalTDigitizer.h.

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

template<class Traits>
CaloHitResponse* EcalTDigitizer< Traits >::theHitResponse [private]

Definition at line 82 of file EcalTDigitizer.h.

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


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