LDMX Software
ecal::EcalTrigPrimDigiProducer Class Reference

Public Member Functions

 EcalTrigPrimDigiProducer (const std::string &name, framework::Process &process)
 Constructor.
 
virtual void configure (framework::config::Parameters &)
 Grabs configure parameters from the python config file.
 
virtual void produce (framework::Event &event)
 Produce EcalHits and put them into the event bus using the EcalDigis as input.
 
- Public Member Functions inherited from framework::Producer
 Producer (const std::string &name, Process &process)
 Class constructor.
 
virtual void process (Event &event) final
 Processing an event for a Producer is calling produce.
 
- Public Member Functions inherited from framework::EventProcessor
 DECLARE_FACTORY (EventProcessor, EventProcessor *, const std::string &, Process &)
 declare that we have a factory for this class
 
 EventProcessor (const std::string &name, Process &process)
 Class constructor.
 
virtual ~EventProcessor ()=default
 Class destructor.
 
virtual void beforeNewRun (ldmx::RunHeader &run_header)
 Callback for Producers to add parameters to the run header before conditions are initialized.
 
virtual void onNewRun (const ldmx::RunHeader &run_header)
 Callback for the EventProcessor to take any necessary action when the run being processed changes.
 
virtual void onFileOpen (EventFile &event_file)
 Callback for the EventProcessor to take any necessary action when a new event input ROOT file is opened.
 
virtual void onFileClose (EventFile &event_file)
 Callback for the EventProcessor to take any necessary action when a event input ROOT file is closed.
 
virtual void onProcessStart ()
 Callback for the EventProcessor to take any necessary action when the processing of events starts, such as creating histograms.
 
virtual void onProcessEnd ()
 Callback for the EventProcessor to take any necessary action when the processing of events finishes, such as calculating job-summary quantities.
 
template<class T >
const T & getCondition (const std::string &condition_name)
 Access a conditions object for the current event.
 
TDirectory * getHistoDirectory ()
 Access/create a directory in the histogram file for this event processor to create histograms and analysis tuples.
 
void setStorageHint (framework::StorageControl::Hint hint)
 Mark the current event as having the given storage control hint from this module_.
 
void setStorageHint (framework::StorageControl::Hint hint, const std::string &purposeString)
 Mark the current event as having the given storage control hint from this module and the given purpose string.
 
int getLogFrequency () const
 Get the current logging frequency from the process.
 
int getRunNumber () const
 Get the run number from the process.
 
std::string getName () const
 Get the processor name.
 
void createHistograms (const std::vector< framework::config::Parameters > &histos)
 Internal function which is used to create histograms passed from the python configuration @parma histos vector of Parameters that configure histograms to create.
 

Private Attributes

std::string digi_coll_name_
 Digi Collection Name to use as input.
 
std::string digi_pass_name_
 Digi Pass Name to use as input.
 
std::string cond_obj_name_
 Conditions object for the calibration information.
 

Additional Inherited Members

- Protected Member Functions inherited from framework::EventProcessor
void abortEvent ()
 Abort the event immediately.
 
- Protected Attributes inherited from framework::EventProcessor
HistogramPool histograms_
 helper object for making and filling histograms
 
NtupleManagerntuple_ {NtupleManager::getInstance()}
 Manager for any ntuples.
 
logging::logger the_log_
 The logger for this EventProcessor.
 

Detailed Description

Definition at line 28 of file EcalTrigPrimDigiProducer.h.

Constructor & Destructor Documentation

◆ EcalTrigPrimDigiProducer()

ecal::EcalTrigPrimDigiProducer::EcalTrigPrimDigiProducer ( const std::string & name,
framework::Process & process )

Constructor.

Definition at line 4 of file EcalTrigPrimDigiProducer.cxx.

6 : Producer(name, process) {}
Producer(const std::string &name, Process &process)
Class constructor.
virtual void process(Event &event) final
Processing an event for a Producer is calling produce.

Member Function Documentation

◆ configure()

void ecal::EcalTrigPrimDigiProducer::configure ( framework::config::Parameters & ps)
virtual

Grabs configure parameters from the python config file.

Parameter Default inputDigiCollName EcalDigis inputDigiPassName "" <– blank means take any pass if only one collection exists

Reimplemented from framework::EventProcessor.

Definition at line 8 of file EcalTrigPrimDigiProducer.cxx.

8 {
9 digi_coll_name_ = ps.get<std::string>("digiCollName");
10 digi_pass_name_ = ps.get<std::string>("digiPassName");
12 ps.get<std::string>("condObjName", "EcalTrigPrimDigiConditions");
13}
std::string digi_pass_name_
Digi Pass Name to use as input.
std::string digi_coll_name_
Digi Collection Name to use as input.
std::string cond_obj_name_
Conditions object for the calibration information.
const T & get(const std::string &name) const
Retrieve the parameter of the given name.
Definition Parameters.h:78

References cond_obj_name_, digi_coll_name_, digi_pass_name_, and framework::config::Parameters::get().

◆ produce()

void ecal::EcalTrigPrimDigiProducer::produce ( framework::Event & event)
virtual

Produce EcalHits and put them into the event bus using the EcalDigis as input.

Implements framework::Producer.

Definition at line 15 of file EcalTrigPrimDigiProducer.cxx.

15 {
16 const EcalTriggerGeometry& geom = getCondition<EcalTriggerGeometry>(
17 EcalTriggerGeometry::CONDITIONS_OBJECT_NAME);
18
19 const ldmx::HgcrocDigiCollection& ecal_digis =
22
23 // get the calibration object
24 const conditions::IntegerTableCondition& conditions =
26
27 // construct the calculator...
28 ldmx::HgcrocTriggerCalculations calc(conditions);
29
30 // Loop over the digis
31 for (unsigned int ix = 0; ix < ecal_digis.getNumDigis(); ix++) {
32 const ldmx::HgcrocDigiCollection::HgcrocDigi pdigi = ecal_digis.getDigi(ix);
33
34 ldmx::EcalTriggerID tid = geom.belongsTo(ldmx::EcalID(pdigi.id()));
35
36 if (!tid.null()) {
37 int tot = 0;
38 if (pdigi.soi().isTOTComplete()) tot = pdigi.soi().tot();
39 calc.addDigi(pdigi.id(), tid.raw(), pdigi.soi().adcT(), tot);
40 }
41 }
42
43 // Now, we compress the digis
44 calc.compressDigis(9); // 9 is the number for Ecal...
45
46 const std::map<unsigned int, uint8_t>& results = calc.compressedEnergies();
47 ldmx::HgcrocTrigDigiCollection tdigis;
48
49 for (auto result : results) {
50 if (result.second > 0) {
51 tdigis.push_back(ldmx::HgcrocTrigDigi(result.first, result.second));
52 }
53 }
54
55 ldmx_log(trace) << " Ecal digi size = " << ecal_digis.size()
56 << " trigger digi size = " << tdigis.size();
57 event.add(getName(), tdigis);
58}
const T & getCondition(const std::string &condition_name)
Access a conditions object for the current event.
std::string getName() const
Get the processor name.
bool null() const
Definition DetectorID.h:60
RawValue raw() const
Definition DetectorID.h:68
Extension of DetectorID providing access to ECal layers and cell numbers in a hex grid.
Definition EcalID.h:20
Extension of DetectorID providing access to ECal trigger cell information.
One DIGI signal coming from the HGC ROC.
unsigned int id() const
Get the ID for this DIGI.
HgcrocDigiCollection::Sample soi() const
Get the sample of interest from this DIGI.
int adcT() const
Get the ADC measurement from this sample.
int tot() const
Get the TOT measurement from this sample.
bool isTOTComplete() const
Get the second flag from the sample checking if TOT is complete at this sample.
Represents a collection of the digi hits readout by an HGCROC.
const HgcrocDigi getDigi(unsigned int digiIndex) const
Get samples for the input digi index.
unsigned int getNumDigis() const
Get total number of digis.
unsigned int size() const
Get total number of digis.
Contains the trigger output for a single trigger hgcroc channel.
Contains the core logic for the Hgcroc trigger calculations.

References ldmx::HgcrocDigiCollection::Sample::adcT(), ldmx::HgcrocTriggerCalculations::addDigi(), ecal::EcalTriggerGeometry::belongsTo(), ldmx::HgcrocTriggerCalculations::compressDigis(), ldmx::HgcrocTriggerCalculations::compressedEnergies(), cond_obj_name_, digi_coll_name_, digi_pass_name_, framework::EventProcessor::getCondition(), ldmx::HgcrocDigiCollection::getDigi(), framework::EventProcessor::getName(), ldmx::HgcrocDigiCollection::getNumDigis(), ldmx::HgcrocDigiCollection::HgcrocDigi::id(), ldmx::HgcrocDigiCollection::Sample::isTOTComplete(), ldmx::DetectorID::null(), ldmx::DetectorID::raw(), ldmx::HgcrocDigiCollection::size(), ldmx::HgcrocDigiCollection::HgcrocDigi::soi(), and ldmx::HgcrocDigiCollection::Sample::tot().

Member Data Documentation

◆ cond_obj_name_

std::string ecal::EcalTrigPrimDigiProducer::cond_obj_name_
private

Conditions object for the calibration information.

Definition at line 60 of file EcalTrigPrimDigiProducer.h.

Referenced by configure(), and produce().

◆ digi_coll_name_

std::string ecal::EcalTrigPrimDigiProducer::digi_coll_name_
private

Digi Collection Name to use as input.

Definition at line 54 of file EcalTrigPrimDigiProducer.h.

Referenced by configure(), and produce().

◆ digi_pass_name_

std::string ecal::EcalTrigPrimDigiProducer::digi_pass_name_
private

Digi Pass Name to use as input.

Definition at line 57 of file EcalTrigPrimDigiProducer.h.

Referenced by configure(), and produce().


The documentation for this class was generated from the following files: