CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
EcalTBDigiProducer Class Reference

#include <EcalTBDigiProducer.h>

Inheritance diagram for EcalTBDigiProducer:
EcalDigiProducer DigiAccumulatorMixMod

Public Member Functions

 EcalTBDigiProducer (const edm::ParameterSet &params, edm::EDProducer &mixMod)
 
virtual void finalizeEvent (edm::Event &, edm::EventSetup const &)
 
virtual void initializeEvent (edm::Event const &, edm::EventSetup const &)
 
virtual ~EcalTBDigiProducer ()
 
- Public Member Functions inherited from EcalDigiProducer
virtual void accumulate (edm::Event const &e, edm::EventSetup const &c)
 
virtual void accumulate (PileUpEventPrincipal const &e, edm::EventSetup const &c)
 
 EcalDigiProducer (const edm::ParameterSet &params, edm::EDProducer &mixMod)
 
virtual ~EcalDigiProducer ()
 
- Public Member Functions inherited from DigiAccumulatorMixMod
virtual void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
 
virtual void beginRun (edm::Run const &run, edm::EventSetup const &setup)
 
 DigiAccumulatorMixMod ()
 
virtual void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
 
virtual void endRun (edm::Run const &run, edm::EventSetup const &setup)
 
virtual void finalizeBunchCrossing (edm::Event &event, edm::EventSetup const &setup, int bunchCrossing)
 
virtual void initializeBunchCrossing (edm::Event const &event, edm::EventSetup const &setup, int bunchCrossing)
 
virtual ~DigiAccumulatorMixMod ()
 

Private Member Functions

virtual void cacheEBDigis (const EBDigiCollection *ebDigiPtr) const
 
virtual void cacheEEDigis (const EEDigiCollection *eeDigiPtr) const
 
void fillTBTDCRawInfo (EcalTBTDCRawInfo &theTBTDCRawInfo)
 
void setPhaseShift (const DetId &detId)
 

Private Attributes

bool m_doPhaseShift
 
bool m_doReadout
 
std::string m_EBdigiFinalTag
 
std::auto_ptr< EBDigiCollectionm_ebDigis
 
std::string m_EBdigiTempTag
 
std::string m_ecalTBInfoLabel
 
std::auto_ptr< EEDigiCollectionm_eeDigis
 
std::auto_ptr< EcalTBTDCRawInfom_TDCproduct
 
std::vector
< EcalTBTDCRecInfoAlgo::EcalTBTDCRanges
m_tdcRanges
 
EcalTBReadoutm_theTBReadout
 
const EcalTrigTowerConstituentsMap m_theTTmap
 
double m_thisPhaseShift
 
double m_tunePhaseShift
 
bool m_use2004OffsetConvention
 

Additional Inherited Members

- Protected Attributes inherited from EcalDigiProducer
EBHitResponsem_EBResponse
 
EEHitResponsem_EEResponse
 
const EcalSimParameterMapm_ParameterMap
 

Detailed Description

Definition at line 18 of file EcalTBDigiProducer.h.

Constructor & Destructor Documentation

EcalTBDigiProducer::EcalTBDigiProducer ( const edm::ParameterSet params,
edm::EDProducer mixMod 
)

Definition at line 14 of file EcalTBDigiProducer.cc.

References funct::false, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), instance, m_doPhaseShift, m_doReadout, m_EBdigiFinalTag, m_EBdigiTempTag, m_ecalTBInfoLabel, m_tdcRanges, m_theTBReadout, m_thisPhaseShift, m_tunePhaseShift, m_use2004OffsetConvention, diffTwoXMLs::ranges, EcalTBTDCRecInfoAlgo::EcalTBTDCRanges::runRanges, AlCaHLTBitMon_QueryRunRegistry::string, EcalTBTDCRecInfoAlgo::EcalTBTDCRanges::tdcMax, and EcalTBTDCRecInfoAlgo::EcalTBTDCRanges::tdcMin.

14  :
15  EcalDigiProducer( params, mixMod )
16 {
17  std::string const instance("simEcalUnsuppressedDigis");
18  m_EBdigiFinalTag = params.getParameter<std::string>( "EBdigiFinalCollection" ) ;
19  m_EBdigiTempTag = params.getParameter<std::string>( "EBdigiCollection");
20 
21  mixMod.produces<EBDigiCollection>(instance + m_EBdigiFinalTag) ; // after selective readout
22  mixMod.produces<EcalTBTDCRawInfo>(instance) ;
23 
24  const bool syncPhase ( params.getParameter<bool>("syncPhase") ) ;
25 
26  // possible phase shift for asynchronous trigger (e.g. test-beam)
27 
28  m_doPhaseShift = !syncPhase ;
29  m_thisPhaseShift = 1. ;
30 
31  typedef std::vector< edm::ParameterSet > Parameters;
32  Parameters ranges=params.getParameter<Parameters>( "tdcRanges" ) ;
33  for( Parameters::iterator itRanges = ranges.begin();
34  itRanges != ranges.end(); ++itRanges )
35  {
37  aRange.runRanges.first = itRanges->getParameter<int>("startRun");
38  aRange.runRanges.second = itRanges->getParameter<int>("endRun");
39  aRange.tdcMin = itRanges->getParameter< std::vector<double> >("tdcMin");
40  aRange.tdcMax = itRanges->getParameter< std::vector<double> >("tdcMax");
41  m_tdcRanges.push_back(std::move(aRange));
42  }
43 
45  params.getUntrackedParameter< bool >("use2004OffsetConvention",
46  false ) ;
47 
49  params.getUntrackedParameter<std::string>( "EcalTBInfoLabel" ,
50  "SimEcalTBG4Object" ) ;
51 
52  m_doReadout = params.getParameter<bool>( "doReadout" ) ;
53 
54  m_theTBReadout = new EcalTBReadout( m_ecalTBInfoLabel ) ;
55 
56  m_tunePhaseShift = params.getParameter<double>( "tunePhaseShift" ) ;
57 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
static PFTauRenderPlugin instance
std::vector< EcalTBTDCRecInfoAlgo::EcalTBTDCRanges > m_tdcRanges
vector< ParameterSet > Parameters
std::string m_EBdigiFinalTag
string ranges
Definition: diffTwoXMLs.py:78
EcalTBReadout * m_theTBReadout
std::string m_EBdigiTempTag
EcalDigiProducer(const edm::ParameterSet &params, edm::EDProducer &mixMod)
std::string m_ecalTBInfoLabel
EcalTBDigiProducer::~EcalTBDigiProducer ( )
virtual

Definition at line 59 of file EcalTBDigiProducer.cc.

60 {
61 }

Member Function Documentation

void EcalTBDigiProducer::cacheEBDigis ( const EBDigiCollection ebDigiPtr) const
privatevirtual

Reimplemented from EcalDigiProducer.

Definition at line 164 of file EcalTBDigiProducer.cc.

References m_ebDigis.

165 {
166  m_ebDigis.reset( new EBDigiCollection ) ;
167  *m_ebDigis = *ebDigiPtr ;
168 }
std::auto_ptr< EBDigiCollection > m_ebDigis
void EcalTBDigiProducer::cacheEEDigis ( const EEDigiCollection eeDigiPtr) const
privatevirtual

Reimplemented from EcalDigiProducer.

Definition at line 171 of file EcalTBDigiProducer.cc.

References gather_cfg::cout, and edm::DataFrameContainer::size().

172 {
173  std::cout<< "===**** EcalTBDigiProducer: number of endcap digis = "
174  << eeDigiPtr->size()<<std::endl ;
175 }
tuple cout
Definition: gather_cfg.py:121
void EcalTBDigiProducer::fillTBTDCRawInfo ( EcalTBTDCRawInfo theTBTDCRawInfo)
private

Definition at line 146 of file EcalTBDigiProducer.cc.

References LogDebug, m_tdcRanges, m_thisPhaseShift, EcalTBTDCRawInfo::setSample(), Ecal2004TBTDCRanges_cff::tdcMax, and Ecal2004TBTDCRanges_cff::tdcMin.

Referenced by initializeEvent().

147 {
148  const unsigned int thisChannel ( 1 ) ;
149 
150  const unsigned int thisCount (
151  (unsigned int)( m_thisPhaseShift*( m_tdcRanges[0].tdcMax[0]
152  - m_tdcRanges[0].tdcMin[0] )
153  + m_tdcRanges[0].tdcMin[0] ) ) ;
154 
155  EcalTBTDCSample theTBTDCSample ( thisChannel, thisCount ) ;
156 
157  const unsigned int sampleIndex ( 0 ) ;
158  theTBTDCRawInfo.setSample( sampleIndex, theTBTDCSample ) ;
159 
160  LogDebug("EcalDigi") << theTBTDCSample << "\n" << theTBTDCRawInfo ;
161 }
#define LogDebug(id)
std::vector< EcalTBTDCRecInfoAlgo::EcalTBTDCRanges > m_tdcRanges
void setSample(unsigned int i, const EcalTBTDCSample &sam)
void EcalTBDigiProducer::finalizeEvent ( edm::Event event,
edm::EventSetup const &  eventSetup 
)
virtual

Reimplemented from EcalDigiProducer.

Definition at line 87 of file EcalTBDigiProducer.cc.

References gather_cfg::cout, EcalDigiProducer::finalizeEvent(), instance, m_doReadout, m_EBdigiFinalTag, m_ebDigis, m_eeDigis, m_TDCproduct, m_theTBReadout, m_theTTmap, EcalTBReadout::performReadout(), and AlCaHLTBitMon_QueryRunRegistry::string.

87  {
88  m_ebDigis.reset( new EBDigiCollection ) ;
89 
90  EcalDigiProducer::finalizeEvent( event, eventSetup ) ;
91 
92  const EBDigiCollection* barrelResult ( &*m_ebDigis ) ;
93 
94  std::auto_ptr<EBDigiCollection> barrelReadout( new EBDigiCollection() ) ;
95  if( m_doReadout )
96  {
98  m_theTTmap,
99  *barrelResult,
100  *barrelReadout ) ;
101  }
102  else
103  {
104  *barrelReadout = *barrelResult ;
105  }
106 
107  std::cout<< "===**** EcalTBDigiProducer: number of barrel digis = "
108  << barrelReadout->size()<<std::endl ;
109 
110  std::string const instance("simEcalUnsuppressedDigis");
111  event.put(barrelReadout, instance + m_EBdigiFinalTag) ;
112  event.put(m_TDCproduct, instance) ;
113 
114  m_ebDigis.reset(); // release memory
115  m_eeDigis.reset(); // release memory
116 }
const EcalTrigTowerConstituentsMap m_theTTmap
std::auto_ptr< EBDigiCollection > m_ebDigis
static PFTauRenderPlugin instance
std::string m_EBdigiFinalTag
void performReadout(edm::Event &event, const EcalTrigTowerConstituentsMap &theTTmap, const EBDigiCollection &input, EBDigiCollection &output)
master function to be called once per event
std::auto_ptr< EcalTBTDCRawInfo > m_TDCproduct
EcalTBReadout * m_theTBReadout
virtual void finalizeEvent(edm::Event &e, edm::EventSetup const &c)
tuple cout
Definition: gather_cfg.py:121
std::auto_ptr< EEDigiCollection > m_eeDigis
void EcalTBDigiProducer::initializeEvent ( edm::Event const &  event,
edm::EventSetup const &  eventSetup 
)
virtual

Reimplemented from EcalDigiProducer.

Definition at line 63 of file EcalTBDigiProducer.cc.

References gather_cfg::cout, DetId::Ecal, EcalBarrel, fillTBTDCRawInfo(), edm::EventSetup::get(), EcalDigiProducer::initializeEvent(), m_doPhaseShift, m_ecalTBInfoLabel, m_TDCproduct, m_theTBReadout, m_thisPhaseShift, EcalTBReadout::setDetIds(), and setPhaseShift().

63  {
64  std::cout<<"====****Entering EcalTBDigiProducer produce()"<<std::endl ;
65  edm::ESHandle<CaloGeometry> hGeometry ;
66  eventSetup.get<CaloGeometryRecord>().get( hGeometry ) ;
67  const std::vector<DetId>& theBarrelDets (
68  hGeometry->getValidDetIds(DetId::Ecal, EcalBarrel) ) ;
69 
70  m_theTBReadout->setDetIds( theBarrelDets ) ;
71 
72  m_TDCproduct.reset( new EcalTBTDCRawInfo(1) ) ;
73  if( m_doPhaseShift )
74  {
75  edm::Handle<PEcalTBInfo> theEcalTBInfo ;
76  event.getByLabel( m_ecalTBInfoLabel, theEcalTBInfo ) ;
77  m_thisPhaseShift = theEcalTBInfo->phaseShift() ;
78 
79  DetId detId( DetId::Ecal, 1 ) ;
80  setPhaseShift( detId ) ;
81 
82  fillTBTDCRawInfo( *m_TDCproduct ) ; // fill the TDC info in the event
83  }
85 }
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &c)
void fillTBTDCRawInfo(EcalTBTDCRawInfo &theTBTDCRawInfo)
void setPhaseShift(const DetId &detId)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void setDetIds(const std::vector< DetId > &detIds)
tell the readout which cells exist
Definition: EcalTBReadout.h:28
Definition: DetId.h:20
std::auto_ptr< EcalTBTDCRawInfo > m_TDCproduct
EcalTBReadout * m_theTBReadout
tuple cout
Definition: gather_cfg.py:121
std::string m_ecalTBInfoLabel
void EcalTBDigiProducer::setPhaseShift ( const DetId detId)
private

Definition at line 119 of file EcalTBDigiProducer.cc.

References LogDebug, EcalDigiProducer::m_EBResponse, EcalDigiProducer::m_EEResponse, EcalDigiProducer::m_ParameterMap, m_thisPhaseShift, m_tunePhaseShift, m_use2004OffsetConvention, Parameters::parameters, EcalHitResponse::setPhaseShift(), DetId::subdetId(), and CaloSimParameters::syncPhase().

Referenced by initializeEvent().

120 {
121  const CaloSimParameters& parameters (
122  EcalDigiProducer::m_ParameterMap->simParameters( detId ) ) ;
123 
124  if ( !parameters.syncPhase() )
125  {
126  const int myDet ( detId.subdetId() ) ;
127 
128  LogDebug("EcalDigi") << "Setting the phase shift "
129  << m_thisPhaseShift
130  << " and the offset "
131  << m_tunePhaseShift
132  << " for the subdetector "
133  << myDet;
134 
135  if( myDet == 1 )
136  {
137  double passPhaseShift ( m_thisPhaseShift + m_tunePhaseShift ) ;
138  if( m_use2004OffsetConvention ) passPhaseShift = 1. - passPhaseShift ;
139  EcalDigiProducer::m_EBResponse->setPhaseShift( passPhaseShift ) ;
140  EcalDigiProducer::m_EEResponse->setPhaseShift( passPhaseShift ) ;
141  }
142  }
143 }
#define LogDebug(id)
dictionary parameters
Definition: Parameters.py:2
const EcalSimParameterMap * m_ParameterMap
Main class for Parameters in different subdetectors.
EBHitResponse * m_EBResponse
void setPhaseShift(double phaseShift)
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
EEHitResponse * m_EEResponse

Member Data Documentation

bool EcalTBDigiProducer::m_doPhaseShift
private

Definition at line 45 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), and initializeEvent().

bool EcalTBDigiProducer::m_doReadout
private

Definition at line 48 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), and finalizeEvent().

std::string EcalTBDigiProducer::m_EBdigiFinalTag
private

Definition at line 42 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), and finalizeEvent().

std::auto_ptr<EBDigiCollection> EcalTBDigiProducer::m_ebDigis
mutableprivate

Definition at line 55 of file EcalTBDigiProducer.h.

Referenced by cacheEBDigis(), and finalizeEvent().

std::string EcalTBDigiProducer::m_EBdigiTempTag
private

Definition at line 43 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer().

std::string EcalTBDigiProducer::m_ecalTBInfoLabel
private

Definition at line 41 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), and initializeEvent().

std::auto_ptr<EEDigiCollection> EcalTBDigiProducer::m_eeDigis
mutableprivate

Definition at line 56 of file EcalTBDigiProducer.h.

Referenced by finalizeEvent().

std::auto_ptr<EcalTBTDCRawInfo> EcalTBDigiProducer::m_TDCproduct
mutableprivate

Definition at line 57 of file EcalTBDigiProducer.h.

Referenced by finalizeEvent(), and initializeEvent().

std::vector<EcalTBTDCRecInfoAlgo::EcalTBTDCRanges> EcalTBDigiProducer::m_tdcRanges
private

Definition at line 50 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), and fillTBTDCRawInfo().

EcalTBReadout* EcalTBDigiProducer::m_theTBReadout
private

Definition at line 39 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), finalizeEvent(), and initializeEvent().

const EcalTrigTowerConstituentsMap EcalTBDigiProducer::m_theTTmap
private

Definition at line 38 of file EcalTBDigiProducer.h.

Referenced by finalizeEvent().

double EcalTBDigiProducer::m_thisPhaseShift
private
double EcalTBDigiProducer::m_tunePhaseShift
private

Definition at line 53 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), and setPhaseShift().

bool EcalTBDigiProducer::m_use2004OffsetConvention
private

Definition at line 51 of file EcalTBDigiProducer.h.

Referenced by EcalTBDigiProducer(), and setPhaseShift().