Belle II Software development
TRGGDLDQMModule Class Reference
Inheritance diagram for TRGGDLDQMModule:
HistoModule Module PathElement

Public Types

enum  EModulePropFlags {
  c_Input = 1 ,
  c_Output = 2 ,
  c_ParallelProcessingCertified = 4 ,
  c_HistogramManager = 8 ,
  c_InternalSerializer = 16 ,
  c_TerminateInAllProcesses = 32 ,
  c_DontCollectStatistics = 64
}
 Each module can be tagged with property flags, which indicate certain features of the module. More...
 
typedef ModuleCondition::EAfterConditionPath EAfterConditionPath
 Forward the EAfterConditionPath definition from the ModuleCondition.
 

Public Member Functions

 TRGGDLDQMModule ()
 Costructor.
 
virtual ~TRGGDLDQMModule ()
 Destrunctor.
 
virtual void initialize () override
 initialize
 
virtual void beginRun () override
 begin Run
 
virtual void event () override
 Event.
 
virtual void endRun () override
 End Run.
 
virtual void terminate () override
 terminate
 
virtual void defineHisto () override
 Define Histogram.
 
virtual std::vector< std::string > getFileNames (bool outputFiles)
 Return a list of output filenames for this modules.
 
const std::string & getName () const
 Returns the name of the module.
 
const std::string & getType () const
 Returns the type of the module (i.e.
 
const std::string & getPackage () const
 Returns the package this module is in.
 
const std::string & getDescription () const
 Returns the description of the module.
 
void setName (const std::string &name)
 Set the name of the module.
 
void setPropertyFlags (unsigned int propertyFlags)
 Sets the flags for the module properties.
 
LogConfiggetLogConfig ()
 Returns the log system configuration.
 
void setLogConfig (const LogConfig &logConfig)
 Set the log system configuration.
 
void setLogLevel (int logLevel)
 Configure the log level.
 
void setDebugLevel (int debugLevel)
 Configure the debug messaging level.
 
void setAbortLevel (int abortLevel)
 Configure the abort log level.
 
void setLogInfo (int logLevel, unsigned int logInfo)
 Configure the printed log information for the given level.
 
void if_value (const std::string &expression, const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 Add a condition to the module.
 
void if_false (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to add a condition to the module.
 
void if_true (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to set the condition of the module.
 
bool hasCondition () const
 Returns true if at least one condition was set for the module.
 
const ModuleConditiongetCondition () const
 Return a pointer to the first condition (or nullptr, if none was set)
 
const std::vector< ModuleCondition > & getAllConditions () const
 Return all set conditions for this module.
 
bool evalCondition () const
 If at least one condition was set, it is evaluated and true returned if at least one condition returns true.
 
std::shared_ptr< PathgetConditionPath () const
 Returns the path of the last true condition (if there is at least one, else reaturn a null pointer).
 
Module::EAfterConditionPath getAfterConditionPath () const
 What to do after the conditional path is finished.
 
std::vector< std::shared_ptr< Path > > getAllConditionPaths () const
 Return all condition paths currently set (no matter if the condition is true or not).
 
bool hasProperties (unsigned int propertyFlags) const
 Returns true if all specified property flags are available in this module.
 
bool hasUnsetForcedParams () const
 Returns true and prints error message if the module has unset parameters which the user has to set in the steering file.
 
const ModuleParamListgetParamList () const
 Return module param list.
 
template<typename T >
ModuleParam< T > & getParam (const std::string &name) const
 Returns a reference to a parameter.
 
bool hasReturnValue () const
 Return true if this module has a valid return value set.
 
int getReturnValue () const
 Return the return value set by this module.
 
std::shared_ptr< PathElementclone () const override
 Create an independent copy of this module.
 
std::shared_ptr< boost::python::list > getParamInfoListPython () const
 Returns a python list of all parameters.
 

Static Public Member Functions

static void exposePythonAPI ()
 Exposes methods of the Module class to Python.
 

Protected Member Functions

void fillRiseFallTimings (void)
 
void fillOutputExtra (void)
 
void fillOutputOverlap (void)
 
void fillOutputPureExtra (void)
 
void genVcd (void)
 
bool anaBitCondition (void)
 
bool isFired (std::string bitname)
 
bool isFired_quick (const std::string &bitname, const bool &isPsnm)
 
int getinbitnum (const char *c) const
 
int getoutbitnum (const char *c) const
 
virtual void def_initialize ()
 Wrappers to make the methods without "def_" prefix callable from Python.
 
virtual void def_beginRun ()
 Wrapper method for the virtual function beginRun() that has the implementation to be used in a call from Python.
 
virtual void def_event ()
 Wrapper method for the virtual function event() that has the implementation to be used in a call from Python.
 
virtual void def_endRun ()
 This method can receive that the current run ends as a call from the Python side.
 
virtual void def_terminate ()
 Wrapper method for the virtual function terminate() that has the implementation to be used in a call from Python.
 
void setDescription (const std::string &description)
 Sets the description of the module.
 
void setType (const std::string &type)
 Set the module type.
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
 Adds a new parameter to the module.
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description)
 Adds a new enforced parameter to the module.
 
void setReturnValue (int value)
 Sets the return value for this module as integer.
 
void setReturnValue (bool value)
 Sets the return value for this module as bool.
 
void setParamList (const ModuleParamList &params)
 Replace existing parameter list.
 

Protected Attributes

int start_skim_gdldqm = 0
 
int end_skim_gdldqm = 0
 
int m_skim = -1
 
TH1I * h_c8_gdlL1TocomL1 [nskim_gdldqm] = {nullptr}
 timestamp diff from gdlL1 to comL1 in LSB8nsec
 
TH1I * h_c8_topTogdlL1 [nskim_gdldqm] = {nullptr}
 timestamp diff from t0(top) to gdlL1 in LSB8nsec
 
TH1I * h_c8_eclTogdlL1 [nskim_gdldqm] = {nullptr}
 timestamp diff from t0(ecl) to gdlL1 in LSB8nsec
 
TH1I * h_c8_cdcTogdlL1 [nskim_gdldqm] = {nullptr}
 timestamp diff from t0(cdc) to gdlL1 in LSB8nsec
 
TH1I * h_c8_ecl8mToGDL [nskim_gdldqm] = {nullptr}
 timestamp diff from fit on fam to GDL in LSB8nsec
 
TH1I * h_c8_topToGDL [nskim_gdldqm] = {nullptr}
 timestamp diff from t0(top) to GDL in LSB8nsec
 
TH1I * h_c8_eclToGDL [nskim_gdldqm] = {nullptr}
 timestamp diff from t0(ecl) to GDL in LSB8nsec
 
TH1I * h_c8_cdcToGDL [nskim_gdldqm] = {nullptr}
 timestamp diff from t0(cdc) to GDL in LSB8nsec
 
TH1I * h_c2_cdcTocomL1 [nskim_gdldqm] = {nullptr}
 timestamp diff from cdc_timing to comL1 in LSB2nsec
 
TH1D * h_ns_cdcTocomL1 [nskim_gdldqm] = {nullptr}
 timestamp diff from cdc_timing to comL1 in nsec
 
TH1D * h_ns_cdcTogdlL1 [nskim_gdldqm] = {nullptr}
 timestamp diff from cdc_timing to gdlL1 in nsec
 
TH1D * h_ns_topToecl [nskim_gdldqm] = {nullptr}
 timestamp diff from top_timing to ecl_timing in nsec
 
TH1D * h_ns_topTocdc [nskim_gdldqm] = {nullptr}
 timestamp diff from top_timing to cdc_timing in nsec
 
TH1I * h_c2_cdcToecl [nskim_gdldqm] = {nullptr}
 timestamp from cdc_timing to ecl_timing to L1 in LSB2nsec
 
TH1D * h_ns_cdcToecl [nskim_gdldqm] = {nullptr}
 timestamp diff from cdc_timing to ecl_timing in nsec
 
TH1I * h_itd [nskim_gdldqm] = {nullptr}
 input bits
 
TH1I * h_itd_rise [N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
 
TH1I * h_itd_fall [N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
 
TH1I * h_ftd [nskim_gdldqm] = {nullptr}
 ftd bits
 
TH1I * h_ftd_rise [N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
 
TH1I * h_ftd_fall [N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
 
TH1I * h_psn [nskim_gdldqm] = {nullptr}
 psn bits
 
TH1I * h_psn_rise [N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
 
TH1I * h_psn_fall [N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
 
TH1I * h_psn_extra [nskim_gdldqm] = {nullptr}
 
TH1I * h_psn_extra_fast [nskim_gdldqm] = {nullptr}
 
TH1I * h_psn_effect_to_l1 [nskim_gdldqm] = {nullptr}
 
TH1I * h_psn_raw_rate [nskim_gdldqm] = {nullptr}
 
TH1I * h_psn_pure_extra [nskim_gdldqm] = {nullptr}
 
TH1I * h_timtype [nskim_gdldqm] = {nullptr}
 timtype
 
std::vector< int > h_0_vec
 
std::vector< int > h_p_vec
 
std::vector< int > h_f_vec
 
std::vector< int > h_i_vec
 
TDirectory * oldDir = nullptr
 
TDirectory * dirDQM = nullptr
 
bool m_eventByEventTimingHistRecord
 
bool m_dumpVcdFile
 
bool m_bitNameOnBinLabel
 
bool m_generatePostscript
 
unsigned m_vcdEventStart = 0
 
unsigned m_vcdNumberOfEvents = 0
 
std::string m_bitConditionToDumpVcd
 
std::string m_postScriptName
 
unsigned n_clocks = 0
 
unsigned evtno = 0
 
unsigned _exp = 0
 
unsigned _run = 0
 
std::vector< int > skim
 
int array_psn_extra_fast [nskim_gdldqm][nsample_fast][n_output_extra] = {{{0}}}
 
DBObjPtr< TRGGDLDBUnpackerm_unpacker
 
int LeafBitMap [320] = {0}
 
char LeafNames [320][100] = {{0}}
 
int _e_timtype = 0
 
int _e_gdll1rvc = 0
 
int _e_coml1rvc = 0
 
int _e_toptiming = 0
 
int _e_ecltiming = 0
 
int _e_cdctiming = 0
 
int _e_toprvc = 0
 
int _e_eclrvc = 0
 
int _e_cdcrvc = 0
 
int ee_psn [10] = {0}
 
int ee_ftd [10] = {0}
 
int ee_itd [10] = {0}
 
int n_leafs = 0
 
int n_leafsExtra = 0
 
int nconf = 0
 
int nword_input = 0
 
int nword_output = 0
 
DBObjPtr< TRGGDLDBInputBitsm_dbinput
 
unsigned n_inbit = 0
 
char inbitname [320][100] = {""}
 
DBObjPtr< TRGGDLDBFTDLBitsm_dbftdl
 
unsigned n_outbit = 0
 
char outbitname [320][100] = {""}
 
std::string skim_menu [nskim_gdldqm]
 
std::string skim_smap [nskim_gdldqm]
 

Static Protected Attributes

static const int nskim_gdldqm = 11
 
static const int n_output_extra = 105
 
static const char * output_extra [n_output_extra]
 
static const int n_output_overlap = 130
 
static const char * output_overlap [n_output_overlap]
 
static const int n_output_pure_extra = 13
 
static const char * output_pure_extra [n_output_pure_extra]
 
static const int nsample_fast = 500
 

Private Member Functions

std::list< ModulePtrgetModules () const override
 no submodules, return empty list
 
std::string getPathString () const override
 return the module name.
 
void setParamPython (const std::string &name, const boost::python::object &pyObj)
 Implements a method for setting boost::python objects.
 
void setParamPythonDict (const boost::python::dict &dictionary)
 Implements a method for reading the parameter values from a boost::python dictionary.
 

Private Attributes

TrgEclMappingtrgeclmap = nullptr
 
StoreArray< TRGGDLUnpackerStoreentAry
 
StoreObjPtr< EventMetaDatabevt
 
StoreObjPtr< SoftwareTriggerResultresult_soft
 
StoreArray< TrackTracks
 
StoreArray< ECLCalDigitm_ECLCalDigitData
 
StoreArray< ECLDigitm_ECLDigitData
 
std::string m_name
 The name of the module, saved as a string (user-modifiable)
 
std::string m_type
 The type of the module, saved as a string.
 
std::string m_package
 Package this module is found in (may be empty).
 
std::string m_description
 The description of the module.
 
unsigned int m_propertyFlags
 The properties of the module as bitwise or (with |) of EModulePropFlags.
 
LogConfig m_logConfig
 The log system configuration of the module.
 
ModuleParamList m_moduleParamList
 List storing and managing all parameter of the module.
 
bool m_hasReturnValue
 True, if the return value is set.
 
int m_returnValue
 The return value.
 
std::vector< ModuleConditionm_conditions
 Module condition, only non-null if set.
 

Detailed Description

Definition at line 40 of file TRGGDLDQMModule.h.

Member Typedef Documentation

◆ EAfterConditionPath

Forward the EAfterConditionPath definition from the ModuleCondition.

Definition at line 88 of file Module.h.

Member Enumeration Documentation

◆ EModulePropFlags

enum EModulePropFlags
inherited

Each module can be tagged with property flags, which indicate certain features of the module.

Enumerator
c_Input 

This module is an input module (reads data).

c_Output 

This module is an output module (writes data).

c_ParallelProcessingCertified 

This module can be run in parallel processing mode safely (All I/O must be done through the data store, in particular, the module must not write any files.)

c_HistogramManager 

This module is used to manage histograms accumulated by other modules.

c_InternalSerializer 

This module is an internal serializer/deserializer for parallel processing.

c_TerminateInAllProcesses 

When using parallel processing, call this module's terminate() function in all processes().

This will also ensure that there is exactly one process (single-core if no parallel modules found) or at least one input, one main and one output process.

c_DontCollectStatistics 

No statistics is collected for this module.

Definition at line 77 of file Module.h.

77 {
78 c_Input = 1,
79 c_Output = 2,
85 };
@ c_HistogramManager
This module is used to manage histograms accumulated by other modules.
Definition: Module.h:81
@ c_Input
This module is an input module (reads data).
Definition: Module.h:78
@ c_DontCollectStatistics
No statistics is collected for this module.
Definition: Module.h:84
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition: Module.h:80
@ c_InternalSerializer
This module is an internal serializer/deserializer for parallel processing.
Definition: Module.h:82
@ c_Output
This module is an output module (writes data).
Definition: Module.h:79
@ c_TerminateInAllProcesses
When using parallel processing, call this module's terminate() function in all processes().
Definition: Module.h:83

Constructor & Destructor Documentation

◆ TRGGDLDQMModule()

Costructor.

Definition at line 46 of file TRGGDLDQMModule.cc.

46 : HistoModule()
47{
48
49 setDescription("DQM for GDL Trigger system");
51
52 addParam("eventByEventTimingHistRecord", m_eventByEventTimingHistRecord,
53 "Recording event by event timing distribution histogram or not",
54 false);
55 addParam("dumpVcdFile", m_dumpVcdFile,
56 "Dumping vcd file or not",
57 false);
58 addParam("bitConditionToDumpVcd", m_bitConditionToDumpVcd,
59 "Condition for vcd. alg format with '!' and '+'.",
60 string(""));
61 addParam("vcdEventStart", m_vcdEventStart,
62 "Start equential event number",
63 unsigned(0));
64 addParam("vcdNumberOfEvents", m_vcdNumberOfEvents,
65 "Number of events to dump vcd file",
66 unsigned(10));
67 addParam("bitNameOnBinLabel", m_bitNameOnBinLabel,
68 "Put bitname on BinLabel",
69 true);
70 addParam("generatePostscript", m_generatePostscript,
71 "Genarete postscript file or not",
72 false);
73 addParam("postScriptName", m_postScriptName,
74 "postscript file name",
75 string("gdldqm.ps"));
76 addParam("skim", m_skim,
77 "use skim information or not",
78 int(-1));
79 B2DEBUG(20, "eventByEventTimingFlag(" << m_eventByEventTimingHistRecord
80 << "), m_dumpVcdFile(" << m_dumpVcdFile
81 << "), m_bitConditionToDumpVcd(" << m_bitConditionToDumpVcd
82 << "), m_vcdEventStart(" << m_vcdEventStart
83 << "), m_vcdNumberOfEvents(" << m_vcdNumberOfEvents);
84
85
86}
HistoModule()
Constructor.
Definition: HistoModule.h:32
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:208
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition: Module.h:560

◆ ~TRGGDLDQMModule()

virtual ~TRGGDLDQMModule ( )
inlinevirtual

Destrunctor.

Definition at line 46 of file TRGGDLDQMModule.h.

46{}

Member Function Documentation

◆ anaBitCondition()

bool anaBitCondition ( void  )
protected

Definition at line 725 of file TRGGDLDQMModule.cc.

726{
727 if (m_bitConditionToDumpVcd.length() == 0) return true;
728 const char* cst = m_bitConditionToDumpVcd.c_str();
729 bool reading_word = false;
730 bool result_the_term = true; // init value must be true
731 bool not_flag = false;
732 unsigned begin_word = 0;
733 unsigned word_length = 0;
734 // notation steeing side must follow
735 // no blank between '!' and word
736 for (unsigned i = 0; i < m_bitConditionToDumpVcd.length(); i++) {
737 if (('a' <= cst[i] && cst[i] <= 'z') ||
738 ('A' <= cst[i] && cst[i] <= 'Z') ||
739 ('_' == cst[i]) || ('!' == cst[i]) ||
740 ('0' <= cst[i] && cst[i] <= '9')) {
741 if (reading_word) { // must not be '!'
742 word_length++;
743 if (i == m_bitConditionToDumpVcd.length() - 1) {
744 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
745 B2DEBUG(20,
746 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
747 << "(" << fired << ")");
748 if (((!not_flag && fired) || (not_flag && !fired)) && result_the_term) {
749 return true;
750 }
751 }
752 } else {
753 // start of new word
754 reading_word = true;
755 if ('!' == cst[i]) {
756 begin_word = i + 1;
757 not_flag = true;
758 word_length = 0;
759 } else {
760 begin_word = i;
761 not_flag = false;
762 word_length = 1;
763 if (i == m_bitConditionToDumpVcd.length() - 1) {
764 // one char bit ('f',...) comes end of conditions, 'xxx+f'
765 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
766 B2DEBUG(20,
767 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
768 << "(" << fired << ")");
769 // cppcheck-suppress knownConditionTrueFalse
770 if (((!not_flag && fired) || (not_flag && !fired)) && result_the_term) {
771 return true;
772 }
773 }
774 }
775 }
776 } else if ('+' == cst[i] || i == m_bitConditionToDumpVcd.length() - 1) {
777 // End of the term.
778 if (reading_word) { // 'xxx+'
779 if (result_the_term) {
780 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
781 B2DEBUG(20,
782 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
783 << "(" << fired << ")");
784 if ((!not_flag && fired) || (not_flag && !fired)) {
785 return true;
786 } else {
787 // this term is denied by the latest bit
788 }
789 } else {
790 // already false.
791 }
792 reading_word = false;
793 } else {
794 // prior char is blank, 'xxx +'
795 if (result_the_term) {
796 return true;
797 } else {
798 // already false
799 }
800 }
801 result_the_term = true; // go to next term
802 } else {
803 // can be blank (white space) or any delimiter.
804 if (reading_word) {
805 // end of a word, 'xxxx '
806 if (result_the_term) {
807 // worth to try
808 bool fired = isFired(m_bitConditionToDumpVcd.substr(begin_word, word_length));
809 B2DEBUG(20,
810 m_bitConditionToDumpVcd.substr(begin_word, word_length).c_str()
811 << "(" << fired << ")");
812 if ((!not_flag && fired) || (not_flag && !fired)) {
813 // go to next word
814 } else {
815 result_the_term = false;
816 }
817 } else {
818 // already false
819 }
820 reading_word = false;
821 } else {
822 // 2nd blank 'xx ' or leading blanck '^ '
823 }
824 }
825 }
826 return false;
827}

◆ beginRun()

void beginRun ( void  )
overridevirtual

begin Run

Reimplemented from HistoModule.

Definition at line 241 of file TRGGDLDQMModule.cc.

242{
243
244 dirDQM->cd();
245
246 for (int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
247 h_c8_gdlL1TocomL1[iskim]->Reset();
248 h_c8_topTogdlL1[iskim]->Reset();
249 h_c8_eclTogdlL1[iskim]->Reset();
250 h_c8_cdcTogdlL1[iskim]->Reset();
251 h_c8_ecl8mToGDL[iskim]->Reset();
252 h_c8_topToGDL[iskim]->Reset();
253 h_c8_eclToGDL[iskim]->Reset();
254 h_c8_cdcToGDL[iskim]->Reset();
255 h_c2_cdcTocomL1[iskim]->Reset();
256 h_ns_cdcTocomL1[iskim]->Reset();
257 h_ns_cdcTogdlL1[iskim]->Reset();
258 h_ns_topToecl[iskim]->Reset();
259 h_ns_topTocdc[iskim]->Reset();
260 h_c2_cdcToecl[iskim]->Reset();
261 h_ns_cdcToecl[iskim]->Reset();
262 h_itd[iskim]->Reset();
263 h_ftd[iskim]->Reset();
264 h_psn[iskim]->Reset();
265 h_psn_extra[iskim]->Reset();
266 h_psn_extra_fast[iskim]->Reset();
267 h_psn_pure_extra[iskim]->Reset();
268 h_timtype[iskim]->Reset();
269 h_psn_raw_rate[iskim]->Reset();
270 h_psn_effect_to_l1[iskim]->Reset();
271 }
272
273 for (int iskim = 0; iskim < nskim_gdldqm; iskim++) {
274 for (int i = 0; i < nsample_fast; i++) {
275 for (int ibin = 0; ibin < n_output_extra; ibin++) {
276 array_psn_extra_fast[iskim][i][ibin] = 0;
277 }
278 }
279 }
280
281 oldDir->cd();
282}
TH1I * h_c8_cdcTogdlL1[nskim_gdldqm]
timestamp diff from t0(cdc) to gdlL1 in LSB8nsec
TH1I * h_c8_eclTogdlL1[nskim_gdldqm]
timestamp diff from t0(ecl) to gdlL1 in LSB8nsec
TH1I * h_c8_topTogdlL1[nskim_gdldqm]
timestamp diff from t0(top) to gdlL1 in LSB8nsec
TH1I * h_c8_eclToGDL[nskim_gdldqm]
timestamp diff from t0(ecl) to GDL in LSB8nsec
TH1D * h_ns_topTocdc[nskim_gdldqm]
timestamp diff from top_timing to cdc_timing in nsec
TH1I * h_ftd[nskim_gdldqm]
ftd bits
TH1D * h_ns_cdcToecl[nskim_gdldqm]
timestamp diff from cdc_timing to ecl_timing in nsec
TH1I * h_c8_ecl8mToGDL[nskim_gdldqm]
timestamp diff from fit on fam to GDL in LSB8nsec
TH1I * h_c2_cdcToecl[nskim_gdldqm]
timestamp from cdc_timing to ecl_timing to L1 in LSB2nsec
TH1I * h_c8_gdlL1TocomL1[nskim_gdldqm]
timestamp diff from gdlL1 to comL1 in LSB8nsec
TH1D * h_ns_cdcTocomL1[nskim_gdldqm]
timestamp diff from cdc_timing to comL1 in nsec
TH1I * h_c2_cdcTocomL1[nskim_gdldqm]
timestamp diff from cdc_timing to comL1 in LSB2nsec
TH1I * h_c8_topToGDL[nskim_gdldqm]
timestamp diff from t0(top) to GDL in LSB8nsec
TH1I * h_psn[nskim_gdldqm]
psn bits
TH1D * h_ns_topToecl[nskim_gdldqm]
timestamp diff from top_timing to ecl_timing in nsec
TH1I * h_itd[nskim_gdldqm]
input bits
TH1D * h_ns_cdcTogdlL1[nskim_gdldqm]
timestamp diff from cdc_timing to gdlL1 in nsec
TH1I * h_timtype[nskim_gdldqm]
timtype
TH1I * h_c8_cdcToGDL[nskim_gdldqm]
timestamp diff from t0(cdc) to GDL in LSB8nsec

◆ clone()

std::shared_ptr< PathElement > clone ( ) const
overridevirtualinherited

Create an independent copy of this module.

Note that parameters are shared, so changing them on a cloned module will also affect the original module.

Implements PathElement.

Definition at line 179 of file Module.cc.

180{
182 newModule->m_moduleParamList.setParameters(getParamList());
183 newModule->setName(getName());
184 newModule->m_package = m_package;
185 newModule->m_propertyFlags = m_propertyFlags;
186 newModule->m_logConfig = m_logConfig;
187 newModule->m_conditions = m_conditions;
188
189 return newModule;
190}
std::shared_ptr< Module > registerModule(const std::string &moduleName, std::string sharedLibPath="") noexcept(false)
Creates an instance of a module and registers it to the ModuleManager.
static ModuleManager & Instance()
Exception is thrown if the requested module could not be created by the ModuleManager.
const ModuleParamList & getParamList() const
Return module param list.
Definition: Module.h:363
const std::string & getName() const
Returns the name of the module.
Definition: Module.h:187
const std::string & getType() const
Returns the type of the module (i.e.
Definition: Module.cc:41
unsigned int m_propertyFlags
The properties of the module as bitwise or (with |) of EModulePropFlags.
Definition: Module.h:512
LogConfig m_logConfig
The log system configuration of the module.
Definition: Module.h:514
std::vector< ModuleCondition > m_conditions
Module condition, only non-null if set.
Definition: Module.h:521
std::string m_package
Package this module is found in (may be empty).
Definition: Module.h:510
std::shared_ptr< Module > ModulePtr
Defines a pointer to a module object as a boost shared pointer.
Definition: Module.h:43

◆ def_beginRun()

virtual void def_beginRun ( )
inlineprotectedvirtualinherited

Wrapper method for the virtual function beginRun() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 426 of file Module.h.

426{ beginRun(); }
virtual void beginRun()
Called when entering a new run.
Definition: Module.h:147

◆ def_endRun()

virtual void def_endRun ( )
inlineprotectedvirtualinherited

This method can receive that the current run ends as a call from the Python side.

For regular C++-Modules that forwards the call to the regular endRun() method.

Reimplemented in PyModule.

Definition at line 439 of file Module.h.

439{ endRun(); }
virtual void endRun()
This method is called if the current run ends.
Definition: Module.h:166

◆ def_event()

virtual void def_event ( )
inlineprotectedvirtualinherited

Wrapper method for the virtual function event() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 432 of file Module.h.

432{ event(); }
virtual void event()
This method is the core of the module.
Definition: Module.h:157

◆ def_initialize()

virtual void def_initialize ( )
inlineprotectedvirtualinherited

Wrappers to make the methods without "def_" prefix callable from Python.

Overridden in PyModule. Wrapper method for the virtual function initialize() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 420 of file Module.h.

420{ initialize(); }
virtual void initialize()
Initialize the Module.
Definition: Module.h:109

◆ def_terminate()

virtual void def_terminate ( )
inlineprotectedvirtualinherited

Wrapper method for the virtual function terminate() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 445 of file Module.h.

445{ terminate(); }
virtual void terminate()
This method is called at the end of the event processing.
Definition: Module.h:176

◆ defineHisto()

void defineHisto ( )
overridevirtual

Define Histogram.

Reimplemented from HistoModule.

Definition at line 88 of file TRGGDLDQMModule.cc.

89{
90 oldDir = gDirectory;
91 dirDQM = gDirectory;
92 if (!oldDir->Get("TRGGDL"))oldDir->mkdir("TRGGDL");
93 dirDQM->cd("TRGGDL");
94
95 for (int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
96 h_c8_gdlL1TocomL1[iskim] = new TH1I(Form("hGDL_gdlL1TocomL1_%s", skim_smap[iskim].c_str()), "comL1 - gdlL1 [clk8ns]", 100, 0,
97 100);
98 h_c8_gdlL1TocomL1[iskim]->GetXaxis()->SetTitle("clk8ns");
99
100 h_c8_topTogdlL1[iskim] = new TH1I(Form("hGDL_topTogdlL1_%s", skim_smap[iskim].c_str()), "gdlL1 - top_timing [clk8ns]", 700, 0,
101 700);
102 h_c8_topTogdlL1[iskim]->GetXaxis()->SetTitle("clk8ns");
103 h_c8_eclTogdlL1[iskim] = new TH1I(Form("hGDL_eclTogdlL1_%s", skim_smap[iskim].c_str()), "gdlL1 - ecl_timing [clk8ns]", 500, 0,
104 500);
105 h_c8_eclTogdlL1[iskim]->GetXaxis()->SetTitle("clk8ns");
106 h_c8_cdcTogdlL1[iskim] = new TH1I(Form("hGDL_cdcTogdlL1_%s", skim_smap[iskim].c_str()), "gdlL1 - cdc_timing [clk8ns]", 700, 0,
107 700);
108 h_c8_cdcTogdlL1[iskim]->GetXaxis()->SetTitle("clk8ns");
109
110 h_c8_ecl8mToGDL[iskim] = new TH1I(Form("hGDL_ecl8mToGDL_%s", skim_smap[iskim].c_str()), "gdlIn^{8MHz} - ecl_timing [clk8ns]",
111 500, 0, 500);
112 h_c8_ecl8mToGDL[iskim]->GetXaxis()->SetTitle("clk8ns");
113 h_c8_topToGDL[iskim] = new TH1I(Form("hGDL_topToGDL_%s", skim_smap[iskim].c_str()), "gdlIn - top_timing [clk8ns]", 700, 0,
114 700);
115 h_c8_topToGDL[iskim]->GetXaxis()->SetTitle("clk8ns");
116 h_c8_eclToGDL[iskim] = new TH1I(Form("hGDL_eclToGDL_%s", skim_smap[iskim].c_str()), "gdlIn - ecl_timing [clk8ns]", 500, 0,
117 500);
118 h_c8_eclToGDL[iskim]->GetXaxis()->SetTitle("clk8ns");
119 h_c8_cdcToGDL[iskim] = new TH1I(Form("hGDL_cdcToGDL_%s", skim_smap[iskim].c_str()), "gdlIn - cdc_timing [clk8ns]", 700, 0,
120 700);
121 h_c8_cdcToGDL[iskim]->GetXaxis()->SetTitle("clk8ns");
122
123 h_c2_cdcTocomL1[iskim] = new TH1I(Form("hGDL_cdcTocomL1_%s", skim_smap[iskim].c_str()), "comL1 - cdc_timing [clk2ns]", 520, 0,
124 5200);
125 h_c2_cdcTocomL1[iskim]->GetXaxis()->SetTitle("clk2ns");
126 h_ns_cdcTocomL1[iskim] = new TH1D(Form("hGDL_ns_cdcTocomL1_%s", skim_smap[iskim].c_str()), "comL1 - cdc_timing [ns]", 2600, 0,
127 10400);
128 h_ns_cdcTocomL1[iskim]->GetXaxis()->SetTitle("ns");
129 h_ns_cdcTocomL1[iskim]->GetYaxis()->SetTitle("evt / 4ns");
130 h_ns_cdcTogdlL1[iskim] = new TH1D(Form("hGDL_ns_cdcTogdlL1_%s", skim_smap[iskim].c_str()), "gdlL1 - cdc_timing [ns]", 2600, 0,
131 10400);
132 h_ns_cdcTogdlL1[iskim]->GetXaxis()->SetTitle("ns");
133 h_ns_cdcTogdlL1[iskim]->GetYaxis()->SetTitle("evt / 4ns");
134
135 h_ns_topToecl[iskim] = new TH1D(Form("hGDL_ns_topToecl_%s", skim_smap[iskim].c_str()), "ecl_timing - top_timing [ns]", 800, 0,
136 4000);
137 h_ns_topToecl[iskim]->GetXaxis()->SetTitle("ns");
138 h_ns_topToecl[iskim]->GetYaxis()->SetTitle("evt / 5ns");
139 h_ns_topTocdc[iskim] = new TH1D(Form("hGDL_ns_topTocdc_%s", skim_smap[iskim].c_str()), "cdc_timing - top_timing [ns]", 800, 0,
140 4000);
141 h_ns_topTocdc[iskim]->GetXaxis()->SetTitle("ns");
142 h_ns_topTocdc[iskim]->GetYaxis()->SetTitle("evt / 5ns");
143 h_ns_cdcToecl[iskim] = new TH1D(Form("hGDL_ns_cdcToecl_%s", skim_smap[iskim].c_str()), "ecl_timing - cdc_timing [ns]", 2000, 0,
144 4000);
145 h_ns_cdcToecl[iskim]->GetXaxis()->SetTitle("ns");
146 h_ns_cdcToecl[iskim]->GetYaxis()->SetTitle("evt / 2ns");
147
148 h_c2_cdcToecl[iskim] = new TH1I(Form("hGDL_cdcToecl_%s", skim_smap[iskim].c_str()), "ecl_timing - cdc_timing [clk2ns]", 1000, 0,
149 2000);
150 h_c2_cdcToecl[iskim]->GetXaxis()->SetTitle("clk2ns");
151
152 h_timtype[iskim] = new TH1I(Form("hGDL_timtype_%s", skim_smap[iskim].c_str()), "timtype", 7, 0, 7);
153
154 h_itd[iskim] = new TH1I(Form("hGDL_itd_%s", skim_smap[iskim].c_str()), "itd", n_inbit + 1, -1, n_inbit);
155 h_ftd[iskim] = new TH1I(Form("hGDL_ftd_%s", skim_smap[iskim].c_str()), "ftd", n_outbit + 1, -1, n_outbit);
156 h_psn[iskim] = new TH1I(Form("hGDL_psn_%s", skim_smap[iskim].c_str()), "psn", n_outbit + 1, -1, n_outbit);
157 // output extra
158 h_psn_extra[iskim] = new TH1I(Form("hGDL_psn_extra_%s", skim_smap[iskim].c_str()), "psn extra", n_output_extra, 0, n_output_extra);
159 for (int i = 0; i < n_output_extra; i++) {
160 h_psn_extra[iskim]->GetXaxis()->SetBinLabel(i + 1, output_extra[i]);
161 }
162 h_psn_extra[iskim]->GetXaxis()->SetLabelSize(0.02);
163 // output extra
164 h_psn_extra_fast[iskim] = new TH1I(Form("hGDL_psn_extra_fast_%s", skim_smap[iskim].c_str()), "psn extra fast", n_output_extra, 0,
165 n_output_extra);
166 for (int i = 0; i < n_output_extra; i++) {
167 h_psn_extra_fast[iskim]->GetXaxis()->SetBinLabel(i + 1, output_extra[i]);
168 }
169 h_psn_extra_fast[iskim]->GetXaxis()->SetLabelSize(0.02);
170 // output overlap
171 h_psn_effect_to_l1[iskim] = new TH1I(Form("hGDL_psn_effect_to_l1_%s", skim_smap[iskim].c_str()), "psn effect to l1",
172 n_output_overlap, 0,
173 n_output_overlap);
174 for (int i = 0; i < n_output_overlap; i++) {
175 h_psn_effect_to_l1[iskim]->GetXaxis()->SetBinLabel(i + 1, output_overlap[i]);
176 }
177 h_psn_effect_to_l1[iskim]->GetXaxis()->SetLabelSize(0.02);
178 // output no overlap
179 h_psn_raw_rate[iskim] = new TH1I(Form("hGDL_psn_raw_rate_%s", skim_smap[iskim].c_str()), "psn raw rate", n_output_overlap, 0,
180 n_output_overlap);
181 for (int i = 0; i < n_output_overlap; i++) {
182 h_psn_raw_rate[iskim]->GetXaxis()->SetBinLabel(i + 1, output_overlap[i]);
183 }
184 h_psn_raw_rate[iskim]->GetXaxis()->SetLabelSize(0.02);
185 // output pure extra
186 h_psn_pure_extra[iskim] = new TH1I(Form("hGDL_psn_pure_extra_%s", skim_smap[iskim].c_str()), "psn pure extra", n_output_pure_extra,
187 0, n_output_pure_extra);
188 for (int i = 0; i < n_output_pure_extra; i++) {
189 h_psn_pure_extra[iskim]->GetXaxis()->SetBinLabel(i + 1, output_pure_extra[i]);
190 }
191
192 h_itd[iskim]->GetXaxis()->SetBinLabel(h_itd[iskim]->GetXaxis()->FindBin(-1 + 0.5), "all");
193 h_ftd[iskim]->GetXaxis()->SetBinLabel(h_ftd[iskim]->GetXaxis()->FindBin(-1 + 0.5), "all");
194 h_psn[iskim]->GetXaxis()->SetBinLabel(h_psn[iskim]->GetXaxis()->FindBin(-1 + 0.5), "all");
195 h_itd[iskim]->GetXaxis()->SetLabelSize(0.02);
196 h_ftd[iskim]->GetXaxis()->SetLabelSize(0.02);
197 h_psn[iskim]->GetXaxis()->SetLabelSize(0.02);
198 for (unsigned i = 0; i < n_inbit; i++) {
199 if (m_bitNameOnBinLabel) {
200 h_itd[iskim]->GetXaxis()->SetBinLabel(h_itd[iskim]->GetXaxis()->FindBin(i + 0.5), inbitname[i]);
201 }
202 }
203 for (unsigned i = 0; i < n_outbit; i++) {
204 if (m_bitNameOnBinLabel) {
205 h_ftd[iskim]->GetXaxis()->SetBinLabel(h_ftd[iskim]->GetXaxis()->FindBin(i + 0.5), outbitname[i]);
206 h_psn[iskim]->GetXaxis()->SetBinLabel(h_psn[iskim]->GetXaxis()->FindBin(i + 0.5), outbitname[i]);
207 }
208 }
209
210 //reduce #plot
211 if (iskim != 0)continue;
212
213 // rise/fall
214 for (unsigned i = 0; i < n_inbit; i++) {
215 h_itd_rise[i][iskim] = new TH1I(Form("hGDL_itd_%s_rise_%s", inbitname[i], skim_smap[iskim].c_str()),
216 Form("itd%d(%s) rising", i, inbitname[i]), 48, 0, 48);
217 h_itd_rise[i][iskim]->SetLineColor(kRed);
218 h_itd_fall[i][iskim] = new TH1I(Form("hGDL_itd_%s_fall_%s", inbitname[i], skim_smap[iskim].c_str()),
219 Form("itd%d(%s) falling", i, inbitname[i]), 48, 0, 48);
220 h_itd_fall[i][iskim]->SetLineColor(kGreen);
221 }
222 for (unsigned i = 0; i < n_outbit; i++) {
223 h_ftd_rise[i][iskim] = new TH1I(Form("hGDL_ftd_%s_rise_%s", outbitname[i], skim_smap[iskim].c_str()),
224 Form("ftd%d(%s) rising", i, outbitname[i]), 48, 0, 48);
225 h_ftd_rise[i][iskim]->SetLineColor(kRed);
226 h_ftd_fall[i][iskim] = new TH1I(Form("hGDL_ftd_%s_fall_%s", outbitname[i], skim_smap[iskim].c_str()),
227 Form("ftd%d(%s) falling", i, outbitname[i]), 48, 0, 48);
228 h_ftd_fall[i][iskim]->SetLineColor(kGreen);
229 h_psn_rise[i][iskim] = new TH1I(Form("hGDL_psn_%s_rise_%s", outbitname[i], skim_smap[iskim].c_str()),
230 Form("psn%d(%s) rising", i, outbitname[i]), 48, 0, 48);
231 h_psn_rise[i][iskim]->SetLineColor(kRed);
232 h_psn_fall[i][iskim] = new TH1I(Form("hGDL_psn_%s_fall_%s", outbitname[i], skim_smap[iskim].c_str()),
233 Form("psn%d(%s) falling", i, outbitname[i]), 48, 0, 48);
234 h_psn_fall[i][iskim]->SetLineColor(kGreen);
235 }
236 }
237
238 oldDir->cd();
239}

◆ endRun()

void endRun ( void  )
overridevirtual

End Run.

Reimplemented from HistoModule.

Definition at line 400 of file TRGGDLDQMModule.cc.

401{
402 if (m_generatePostscript) {
403 TPostScript* ps = new TPostScript(m_postScriptName.c_str(), 112);
404 gStyle->SetOptStat(0);
405 TCanvas c1("c1", "", 0, 0, 500, 300);
406 c1.cd();
407
408 for (int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
409
410 h_itd[iskim]->GetXaxis()->SetRange(h_itd[iskim]->GetXaxis()->FindBin(0.5),
411 h_itd[iskim]->GetXaxis()->FindBin(n_inbit - 0.5));
412 h_itd[iskim]->Draw();
413 c1.Update();
414 h_ftd[iskim]->GetXaxis()->SetRange(h_ftd[iskim]->GetXaxis()->FindBin(0.5),
415 h_ftd[iskim]->GetXaxis()->FindBin(n_outbit - 0.5));
416 h_ftd[iskim]->Draw();
417 c1.Update();
418 h_psn[iskim]->GetXaxis()->SetRange(h_psn[iskim]->GetXaxis()->FindBin(0.5),
419 h_psn[iskim]->GetXaxis()->FindBin(n_outbit - 0.5));
420 h_psn[iskim]->Draw();
421 c1.Update();
422 h_ftd[iskim]->SetTitle("ftd(green), psnm(red)");
423 h_ftd[iskim]->SetFillColor(kGreen);
424 h_ftd[iskim]->SetBarWidth(0.4);
425 h_ftd[iskim]->Draw("bar");
426 h_psn[iskim]->SetFillColor(kRed);
427 h_psn[iskim]->SetBarWidth(0.4);
428 h_psn[iskim]->SetBarOffset(0.5);
429 h_psn[iskim]->Draw("bar,same");
430
431 c1.Update();
432 h_timtype[iskim]->Draw();
433 c1.Update();
434 h_c8_gdlL1TocomL1[iskim]->Draw();
435 c1.Update();
436 h_c8_topTogdlL1[iskim]->Draw();
437 c1.Update();
438 h_c8_eclTogdlL1[iskim]->Draw();
439 c1.Update();
440 h_c8_cdcTogdlL1[iskim]->Draw();
441 c1.Update();
442 h_c8_ecl8mToGDL[iskim]->Draw();
443 c1.Update();
444 h_c8_topToGDL[iskim]->Draw();
445 c1.Update();
446 h_c8_eclToGDL[iskim]->Draw();
447 c1.Update();
448 h_c8_cdcToGDL[iskim]->Draw();
449 c1.Update();
450 h_c2_cdcTocomL1[iskim]->Draw();
451 c1.Update();
452 h_ns_cdcTocomL1[iskim]->Draw();
453 c1.Update();
454 h_ns_cdcTogdlL1[iskim]->Draw();
455 c1.Update();
456 h_ns_topToecl[iskim]->Draw();
457 c1.Update();
458 h_ns_topTocdc[iskim]->Draw();
459 c1.Update();
460 h_c2_cdcToecl[iskim]->Draw();
461 c1.Update();
462 h_ns_cdcToecl[iskim]->Draw();
463 c1.Update();
464
465 //reduce #plot
466 if (iskim != 0)continue;
467 for (unsigned i = 0; i < n_inbit; i++) {
468
469 h_itd_rise[i][iskim]->SetTitle(Form("itd%d(%s) rising(red), falling(green)",
470 i, inbitname[i]));
471 h_itd_rise[i][iskim]->Draw();
472 h_itd_fall[i][iskim]->Draw("same");
473 c1.Update();
474 }
475
476 }
477
478 ps->Close();
479 }
480}

◆ evalCondition()

bool evalCondition ( ) const
inherited

If at least one condition was set, it is evaluated and true returned if at least one condition returns true.

If no condition or result value was defined, the method returns false. Otherwise, the condition is evaluated and true returned, if at least one condition returns true. To speed up the evaluation, the condition strings were already parsed in the method if_value().

Returns
True if at least one condition and return value exists and at least one condition expression was evaluated to true.

Definition at line 96 of file Module.cc.

97{
98 if (m_conditions.empty()) return false;
99
100 //okay, a condition was set for this Module...
101 if (!m_hasReturnValue) {
102 B2FATAL("A condition was set for '" << getName() << "', but the module did not set a return value!");
103 }
104
105 for (const auto& condition : m_conditions) {
106 if (condition.evaluate(m_returnValue)) {
107 return true;
108 }
109 }
110 return false;
111}
int m_returnValue
The return value.
Definition: Module.h:519
bool m_hasReturnValue
True, if the return value is set.
Definition: Module.h:518

◆ event()

void event ( void  )
overridevirtual

Event.

Reimplemented from HistoModule.

Definition at line 482 of file TRGGDLDQMModule.cc.

483{
484 /* cppcheck-suppress variableScope */
485 static unsigned nvcd = 0;
486 static bool begin_run = true;
487
488 skim.clear();
489
490 if (!entAry || !entAry.getEntries()) {
491 return;
492 }
493
494 //Get skim type from SoftwareTriggerResult
495 for (int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
496 if (iskim == 0) skim.push_back(iskim);
497 }
498 if (result_soft.isValid()) {
499 const std::map<std::string, int>& skim_map = result_soft->getResults();
500 for (int iskim = start_skim_gdldqm; iskim < end_skim_gdldqm; iskim++) {
501 if (iskim == 0);
502 else if (skim_map.find(skim_menu[iskim]) != skim_map.end()) {
503 const bool accepted = (result_soft->getResult(skim_menu[iskim]) == SoftwareTriggerCutResult::c_accept);
504 if (accepted) skim.push_back(iskim);
505 }
506 }
507 }
508
509
510 //prepare entAry adress
511 int clk_map = 0;
512 for (int i = 0; i < 320; i++) {
513 if (strcmp(entAry[0]->m_unpackername[i], "evt") == 0) evtno = entAry[0]->m_unpacker[i];
514 if (strcmp(entAry[0]->m_unpackername[i], "clk") == 0) clk_map = i;
515 }
516
517 const double clkTo2ns = 1. / .508877;
518 const double clkTo1ns = 0.5 / .508877;
519
520 dirDQM->cd();
521
522 for (unsigned i = 0; i < n_clocks; i++) {
523 for (int j = 0; j < n_leafs + n_leafsExtra; j++) {
524 h_0_vec[i * (n_leafs + n_leafsExtra) + j] = 0;
525 }
526 for (unsigned j = 0; j < n_outbit; j++) {
527 h_p_vec[i * n_outbit + j] = 0;
528 }
529 for (unsigned j = 0; j < n_outbit; j++) {
530 h_f_vec[i * n_outbit + j] = 0;
531 }
532 for (unsigned j = 0; j < n_inbit; j++) {
533 h_i_vec[i * n_inbit + j] = 0;
534 }
535 }
536
537 oldDir->cd();
538
539 // fill "bit vs clk" for the event
540 for (int ii = 0; ii < entAry.getEntries(); ii++) {
541 std::vector<int*> Bits(n_leafs + n_leafsExtra);
542 //set pointer
543 for (int i = 0; i < 320; i++) {
544 if (LeafBitMap[i] != -1) {
545 Bits[LeafBitMap[i]] = &(entAry[ii]->m_unpacker[i]);
546 }
547 }
548 for (int leaf = 0; leaf < n_leafs + n_leafsExtra; leaf++) {
549 h_0_vec[(entAry[ii]->m_unpacker[clk_map]) * (n_leafs + n_leafsExtra) + leaf] = *Bits[leaf];
550 }
551 }
552 int coml1rvc = h_0_vec[0 * (n_leafs + n_leafsExtra) + _e_coml1rvc];
553 int toprvc = h_0_vec[0 * (n_leafs + n_leafsExtra) + _e_toprvc];
554 int eclrvc = h_0_vec[0 * (n_leafs + n_leafsExtra) + _e_eclrvc];
555 int cdcrvc = h_0_vec[0 * (n_leafs + n_leafsExtra) + _e_cdcrvc];
556 int c1_top_timing = h_0_vec[(n_clocks - 1) * (n_leafs + n_leafsExtra) + _e_toptiming];
557 int c1_ecl_timing = h_0_vec[(n_clocks - 1) * (n_leafs + n_leafsExtra) + _e_ecltiming];
558 int c1_cdc_timing = h_0_vec[(n_clocks - 1) * (n_leafs + n_leafsExtra) + _e_cdctiming];
559 int c8_top_timing = c1_top_timing >> 3;
560 int c2_top_timing = c1_top_timing >> 1;
561 int c8_ecl_timing = c1_ecl_timing >> 3;
562 int c2_ecl_timing = c1_ecl_timing >> 1;
563 int c8_cdc_timing = c1_cdc_timing >> 3;
564 int c2_cdc_timing = c1_cdc_timing >> 1;
565
566 if (begin_run) {
567 B2DEBUG(20, "nconf(" << nconf
568 << "), n_clocks(" << n_clocks
569 << "), n_leafs(" << n_leafs
570 << "), n_leafsExtra(" << n_leafsExtra
571 << ")");
572 begin_run = false;
573 }
574
575 int psn[10] = {0};
576 int ftd[10] = {0};
577 int itd[10] = {0};
578 int timtype = 0;
579
580
581 int gdll1_rvc = h_0_vec[(n_clocks - 1) * (n_leafs + n_leafsExtra) + _e_gdll1rvc];
582
583 // fill event by event timing histogram and get time integrated bit info
584 for (unsigned clk = 1; clk <= n_clocks; clk++) {
585 int psn_tmp[10] = {0};
586 int ftd_tmp[10] = {0};
587 int itd_tmp[10] = {0};
588 for (unsigned j = 0; j < (unsigned)nword_input; j++) {
589 itd_tmp[j] = h_0_vec[(clk - 1) * (n_leafs + n_leafsExtra) + ee_itd[j]];
590 itd[j] |= itd_tmp[j];
591 for (int i = 0; i < 32; i++) {
592 if (i + j * 32 >= n_inbit)continue;
593 if (itd_tmp[j] & (1 << i)) h_i_vec[(clk - 1)*n_inbit + i + j * 32] = 1;
594 }
595 }
596 if (nconf == 0) {
597 psn_tmp[0] = h_0_vec[(clk - 1) * (n_leafs + n_leafsExtra) + ee_psn[0]];
598 ftd_tmp[0] = h_0_vec[(clk - 1) * (n_leafs + n_leafsExtra) + ee_ftd[0]];
599 psn[0] |= psn_tmp[0];
600 ftd[0] |= ftd_tmp[0];
601 for (unsigned int i = 0; i < 32; i++) {
602 if (i >= n_outbit)continue;
603 if (psn_tmp[0] & (1 << i)) h_p_vec[(clk - 1)*n_outbit + i] = 1;
604 if (ftd_tmp[0] & (1 << i)) h_f_vec[(clk - 1)*n_outbit + i] = 1;
605 }
606 psn_tmp[1] = h_0_vec[(clk - 1) * n_outbit + ee_psn[2]] * (1 << 16) + h_0_vec[(clk - 1) * n_outbit + ee_psn[1]];
607 ftd_tmp[1] = h_0_vec[(clk - 1) * n_outbit + ee_ftd[2]] * (1 << 16) + h_0_vec[(clk - 1) * n_outbit + ee_ftd[1]];
608 psn[1] |= psn_tmp[1];
609 ftd[1] |= ftd_tmp[1];
610 for (unsigned int i = 0; i < 32; i++) {
611 if (i + 32 >= n_outbit)continue;
612 if (psn_tmp[1] & (1 << i)) h_p_vec[(clk - 1)*n_outbit + i + 32] = 1;
613 if (ftd_tmp[1] & (1 << i)) h_f_vec[(clk - 1)*n_outbit + i + 32] = 1;
614 }
615 } else {
616 for (unsigned j = 0; j < (unsigned)nword_output; j++) {
617 psn_tmp[j] = h_0_vec[(clk - 1) * (n_leafs + n_leafsExtra) + ee_psn[j]];
618 ftd_tmp[j] = h_0_vec[(clk - 1) * (n_leafs + n_leafsExtra) + ee_ftd[j]];
619 psn[j] |= psn_tmp[j];
620 ftd[j] |= ftd_tmp[j];
621 for (int i = 0; i < 32; i++) {
622 if (i + j * 32 >= n_outbit)continue;
623 if (psn_tmp[j] & (1 << i)) h_p_vec[(clk - 1)*n_outbit + i + j * 32] = 1;
624 if (ftd_tmp[j] & (1 << i)) h_f_vec[(clk - 1)*n_outbit + i + j * 32] = 1;
625 }
626 }
627 }
628 int timtype_tmp = h_0_vec[(clk - 1) * (n_leafs + n_leafsExtra) + _e_timtype];
629 timtype = (timtype_tmp == 0) ? timtype : timtype_tmp;
630
631 } // clk
632
633
634 // fill rising and falling edges
635 fillRiseFallTimings();
636 // fill Output_extra for efficiency study
637 fillOutputExtra();
638 // fill Output_overlap for trigger rate study
639 fillOutputOverlap();
640
641 // fill summary histograms
642 for (unsigned ifill = 0; ifill < skim.size(); ifill++) {
643 h_timtype[skim[ifill]]->Fill(timtype);
644 h_itd[skim[ifill]]->Fill(-0.5);
645 h_ftd[skim[ifill]]->Fill(-0.5);
646 h_psn[skim[ifill]]->Fill(-0.5);
647 for (int i = 0; i < 32; i++) {
648 for (unsigned j = 0; j < (unsigned)nword_input; j++) {
649 if (itd[j] & (1 << i)) h_itd[skim[ifill]]->Fill(i + 0.5 + 32 * j);
650 }
651 for (unsigned j = 0; j < (unsigned)nword_output; j++) {
652 if (ftd[j] & (1 << i)) h_ftd[skim[ifill]]->Fill(i + 0.5 + 32 * j);
653 if (psn[j] & (1 << i)) h_psn[skim[ifill]]->Fill(i + 0.5 + 32 * j);
654 }
655 }
656
657 // fill timestamp values stored in header
658 int gdlL1TocomL1 = gdll1_rvc < coml1rvc ? coml1rvc - gdll1_rvc : (coml1rvc + 1280) - gdll1_rvc;
659 h_c8_gdlL1TocomL1[skim[ifill]]->Fill(gdlL1TocomL1);
660
661 int topTogdlL1 = gdll1_rvc < c8_top_timing ? (gdll1_rvc + 1280) - c8_top_timing : gdll1_rvc - c8_top_timing;
662 h_c8_topTogdlL1[skim[ifill]]->Fill(topTogdlL1);
663
664 int eclTogdlL1 = gdll1_rvc < c8_ecl_timing ? (gdll1_rvc + 1280) - c8_ecl_timing : gdll1_rvc - c8_ecl_timing;
665 h_c8_eclTogdlL1[skim[ifill]]->Fill(eclTogdlL1);
666
667 int cdcTogdlL1 = gdll1_rvc < c8_cdc_timing ? (gdll1_rvc + 1280) - c8_cdc_timing : gdll1_rvc - c8_cdc_timing;
668 h_c8_cdcTogdlL1[skim[ifill]]->Fill(cdcTogdlL1);
669
670 int c127_ecl_timing = c8_ecl_timing & (((1 << 7) - 1) << 4);
671 int fit8mToGDL = c127_ecl_timing < eclrvc ? eclrvc - c127_ecl_timing : (eclrvc + 1280) - c127_ecl_timing;
672 h_c8_ecl8mToGDL[skim[ifill]]->Fill(fit8mToGDL);
673
674 int topToGDL = c8_top_timing < toprvc ? toprvc - c8_top_timing : (toprvc + 1280) - c8_top_timing;
675 h_c8_topToGDL[skim[ifill]]->Fill(topToGDL);
676 int eclToGDL = c8_ecl_timing < eclrvc ? eclrvc - c8_ecl_timing : (eclrvc + 1280) - c8_ecl_timing;
677 h_c8_eclToGDL[skim[ifill]]->Fill(eclToGDL);
678 int cdcToGDL = c8_cdc_timing < cdcrvc ? cdcrvc - c8_cdc_timing : (cdcrvc + 1280) - c8_cdc_timing;
679 h_c8_cdcToGDL[skim[ifill]]->Fill(cdcToGDL);
680
681 int c2_comL1 = coml1rvc << 2;
682 int c2_gdlL1 = gdll1_rvc << 2;
683 int c2_diff_cdcTogdlL1 = c2_gdlL1 > c2_cdc_timing ?
684 c2_gdlL1 - c2_cdc_timing :
685 c2_gdlL1 - c2_cdc_timing + (1280 << 2) ;
686 h_ns_cdcTogdlL1[skim[ifill]]->Fill(c2_diff_cdcTogdlL1 * clkTo2ns);
687
688 int c2_diff_cdcTocomL1 = c2_comL1 > c2_cdc_timing ?
689 c2_comL1 - c2_cdc_timing :
690 c2_comL1 - c2_cdc_timing + (1280 << 2) ;
691 h_c2_cdcTocomL1[skim[ifill]]->Fill(c2_diff_cdcTocomL1);
692 h_ns_cdcTocomL1[skim[ifill]]->Fill(c2_diff_cdcTocomL1 * clkTo2ns);
693
694 int c2_diff_cdcToecl = c2_ecl_timing > c2_cdc_timing ?
695 c2_ecl_timing - c2_cdc_timing :
696 c2_ecl_timing - c2_cdc_timing + (1280 << 2);
697 h_c2_cdcToecl[skim[ifill]]->Fill(c2_diff_cdcToecl);
698 h_ns_cdcToecl[skim[ifill]]->Fill(c2_diff_cdcToecl * clkTo2ns);
699
700 int c1_diff_topToecl = c1_ecl_timing > c1_top_timing ?
701 c1_ecl_timing - c1_top_timing :
702 c1_ecl_timing - c1_top_timing + (1280 << 3);
703 h_ns_topToecl[skim[ifill]]->Fill(c1_diff_topToecl * clkTo1ns);
704
705 int c2_diff_topTocdc = c2_cdc_timing > c2_top_timing ?
706 c2_cdc_timing - c2_top_timing :
707 c2_cdc_timing - c2_top_timing + (1280 << 2);
708 h_ns_topTocdc[skim[ifill]]->Fill(c2_diff_topTocdc * clkTo2ns);
709 }
710
711
712 // vcd dump
713 if (m_dumpVcdFile) {
714 if (anaBitCondition()) {
715 nvcd++;
716 B2DEBUG(20, "anaBitCondition fired, evt(" << evtno << ")");
717 if (m_vcdEventStart <= nvcd && nvcd < m_vcdEventStart + m_vcdNumberOfEvents) {
718 genVcd();
719 }
720 }
721 }
722
723}
@ c_accept
Accept this event.

◆ exposePythonAPI()

void exposePythonAPI ( )
staticinherited

Exposes methods of the Module class to Python.

Definition at line 325 of file Module.cc.

326{
327 // to avoid confusion between std::arg and boost::python::arg we want a shorthand namespace as well
328 namespace bp = boost::python;
329
330 docstring_options options(true, true, false); //userdef, py sigs, c++ sigs
331
332 void (Module::*setReturnValueInt)(int) = &Module::setReturnValue;
333
334 enum_<Module::EAfterConditionPath>("AfterConditionPath",
335 R"(Determines execution behaviour after a conditional path has been executed:
336
337.. attribute:: END
338
339 End processing of this path after the conditional path. (this is the default for if_value() etc.)
340
341.. attribute:: CONTINUE
342
343 After the conditional path, resume execution after this module.)")
344 .value("END", Module::EAfterConditionPath::c_End)
345 .value("CONTINUE", Module::EAfterConditionPath::c_Continue)
346 ;
347
348 /* Do not change the names of >, <, ... we use them to serialize conditional pathes */
349 enum_<Belle2::ModuleCondition::EConditionOperators>("ConditionOperator")
356 ;
357
358 enum_<Module::EModulePropFlags>("ModulePropFlags",
359 R"(Flags to indicate certain low-level features of modules, see :func:`Module.set_property_flags()`, :func:`Module.has_properties()`. Most useful flags are:
360
361.. attribute:: PARALLELPROCESSINGCERTIFIED
362
363 This module can be run in parallel processing mode safely (All I/O must be done through the data store, in particular, the module must not write any files.)
364
365.. attribute:: HISTOGRAMMANAGER
366
367 This module is used to manage histograms accumulated by other modules
368
369.. attribute:: TERMINATEINALLPROCESSES
370
371 When using parallel processing, call this module's terminate() function in all processes. This will also ensure that there is exactly one process (single-core if no parallel modules found) or at least one input, one main and one output process.
372)")
373 .value("INPUT", Module::EModulePropFlags::c_Input)
374 .value("OUTPUT", Module::EModulePropFlags::c_Output)
375 .value("PARALLELPROCESSINGCERTIFIED", Module::EModulePropFlags::c_ParallelProcessingCertified)
376 .value("HISTOGRAMMANAGER", Module::EModulePropFlags::c_HistogramManager)
377 .value("INTERNALSERIALIZER", Module::EModulePropFlags::c_InternalSerializer)
378 .value("TERMINATEINALLPROCESSES", Module::EModulePropFlags::c_TerminateInAllProcesses)
379 ;
380
381 //Python class definition
382 class_<Module, PyModule> module("Module", R"(
383Base class for Modules.
384
385A module is the smallest building block of the framework.
386A typical event processing chain consists of a Path containing
387modules. By inheriting from this base class, various types of
388modules can be created. To use a module, please refer to
389:func:`Path.add_module()`. A list of modules is available by running
390``basf2 -m`` or ``basf2 -m package``, detailed information on parameters is
391given by e.g. ``basf2 -m RootInput``.
392
393The 'Module Development' section in the manual provides detailed information
394on how to create modules, setting parameters, or using return values/conditions:
395https://xwiki.desy.de/xwiki/rest/p/f4fa4/#HModuleDevelopment
396
397)");
398 module
399 .def("__str__", &Module::getPathString)
400 .def("name", &Module::getName, return_value_policy<copy_const_reference>(),
401 "Returns the name of the module. Can be changed via :func:`set_name() <Module.set_name()>`, use :func:`type() <Module.type()>` for identifying a particular module class.")
402 .def("type", &Module::getType, return_value_policy<copy_const_reference>(),
403 "Returns the type of the module (i.e. class name minus 'Module')")
404 .def("set_name", &Module::setName, args("name"), R"(
405Set custom name, e.g. to distinguish multiple modules of the same type.
406
407>>> path.add_module('EventInfoSetter')
408>>> ro = path.add_module('RootOutput', branchNames=['EventMetaData'])
409>>> ro.set_name('RootOutput_metadata_only')
410>>> print(path)
411[EventInfoSetter -> RootOutput_metadata_only]
412
413)")
414 .def("description", &Module::getDescription, return_value_policy<copy_const_reference>(),
415 "Returns the description of this module.")
416 .def("package", &Module::getPackage, return_value_policy<copy_const_reference>(),
417 "Returns the package this module belongs to.")
418 .def("available_params", &_getParamInfoListPython,
419 "Return list of all module parameters as `ModuleParamInfo` instances")
420 .def("has_properties", &Module::hasProperties, (bp::arg("properties")),
421 R"DOCSTRING(Allows to check if the module has the given properties out of `ModulePropFlags` set.
422
423>>> if module.has_properties(ModulePropFlags.PARALLELPROCESSINGCERTIFIED):
424>>> ...
425
426Parameters:
427 properties (int): bitmask of `ModulePropFlags` to check for.
428)DOCSTRING")
429 .def("set_property_flags", &Module::setPropertyFlags, args("property_mask"),
430 "Set module properties in the form of an OR combination of `ModulePropFlags`.");
431 {
432 // python signature is too crowded, make ourselves
433 docstring_options subOptions(true, false, false); //userdef, py sigs, c++ sigs
434 module
435 .def("if_value", &Module::if_value,
436 (bp::arg("expression"), bp::arg("condition_path"), bp::arg("after_condition_path")= Module::EAfterConditionPath::c_End),
437 R"DOCSTRING(if_value(expression, condition_path, after_condition_path=AfterConditionPath.END)
438
439Sets a conditional sub path which will be executed after this
440module if the return value set in the module passes the given ``expression``.
441
442Modules can define a return value (int or bool) using ``setReturnValue()``,
443which can be used in the steering file to split the Path based on this value, for example
444
445>>> module_with_condition.if_value("<1", another_path)
446
447In case the return value of the ``module_with_condition`` for a given event is
448less than 1, the execution will be diverted into ``another_path`` for this event.
449
450You could for example set a special return value if an error occurs, and divert
451the execution into a path containing :b2:mod:`RootOutput` if it is found;
452saving only the data producing/produced by the error.
453
454After a conditional path has executed, basf2 will by default stop processing
455the path for this event. This behaviour can be changed by setting the
456``after_condition_path`` argument.
457
458Parameters:
459 expression (str): Expression to determine if the conditional path should be executed.
460 This should be one of the comparison operators ``<``, ``>``, ``<=``,
461 ``>=``, ``==``, or ``!=`` followed by a numerical value for the return value
462 condition_path (Path): path to execute in case the expression is fulfilled
463 after_condition_path (AfterConditionPath): What to do once the ``condition_path`` has been executed.
464)DOCSTRING")
465 .def("if_false", &Module::if_false,
466 (bp::arg("condition_path"), bp::arg("after_condition_path")= Module::EAfterConditionPath::c_End),
467 R"DOC(if_false(condition_path, after_condition_path=AfterConditionPath.END)
468
469Sets a conditional sub path which will be executed after this module if
470the return value of the module evaluates to False. This is equivalent to
471calling `if_value` with ``expression=\"<1\"``)DOC")
472 .def("if_true", &Module::if_true,
473 (bp::arg("condition_path"), bp::arg("after_condition_path")= Module::EAfterConditionPath::c_End),
474 R"DOC(if_true(condition_path, after_condition_path=AfterConditionPath.END)
475
476Sets a conditional sub path which will be executed after this module if
477the return value of the module evaluates to True. It is equivalent to
478calling `if_value` with ``expression=\">=1\"``)DOC");
479 }
480 module
481 .def("has_condition", &Module::hasCondition,
482 "Return true if a conditional path has been set for this module "
483 "using `if_value`, `if_true` or `if_false`")
484 .def("get_all_condition_paths", &_getAllConditionPathsPython,
485 "Return a list of all conditional paths set for this module using "
486 "`if_value`, `if_true` or `if_false`")
487 .def("get_all_conditions", &_getAllConditionsPython,
488 "Return a list of all conditional path expressions set for this module using "
489 "`if_value`, `if_true` or `if_false`")
490 .add_property("logging", make_function(&Module::getLogConfig, return_value_policy<reference_existing_object>()),
@ c_GE
Greater or equal than: ">=".
@ c_SE
Smaller or equal than: "<=".
@ c_GT
Greater than: ">"
@ c_NE
Not equal: "!=".
@ c_EQ
Equal: "=" or "=="
@ c_ST
Smaller than: "<"
Base class for Modules.
Definition: Module.h:72
LogConfig & getLogConfig()
Returns the log system configuration.
Definition: Module.h:225
void if_value(const std::string &expression, const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
Add a condition to the module.
Definition: Module.cc:79
void if_true(const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
A simplified version to set the condition of the module.
Definition: Module.cc:90
void setReturnValue(int value)
Sets the return value for this module as integer.
Definition: Module.cc:220
void setLogConfig(const LogConfig &logConfig)
Set the log system configuration.
Definition: Module.h:230
const std::string & getDescription() const
Returns the description of the module.
Definition: Module.h:202
void if_false(const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
A simplified version to add a condition to the module.
Definition: Module.cc:85
bool hasCondition() const
Returns true if at least one condition was set for the module.
Definition: Module.h:311
const std::string & getPackage() const
Returns the package this module is in.
Definition: Module.h:197
void setName(const std::string &name)
Set the name of the module.
Definition: Module.h:214
bool hasProperties(unsigned int propertyFlags) const
Returns true if all specified property flags are available in this module.
Definition: Module.cc:160
std::string getPathString() const override
return the module name.
Definition: Module.cc:192

◆ fillOutputExtra()

void fillOutputExtra ( void  )
protected

Definition at line 1694 of file TRGGDLDQMModule.cc.

1695{
1696 bool c4_fired = isFired_quick("c4");
1697 bool hie_fired = isFired_quick("hie");
1698 bool LML_fired = (isFired_quick("lml0", true) || isFired_quick("lml1", true) || isFired_quick("lml2", true)
1699 || isFired_quick("lml3", true) || isFired_quick("lml4", true) || isFired_quick("lml5", true)
1700 || isFired_quick("lml6", true) || isFired_quick("lml7", true) || isFired_quick("lml8", true)
1701 || isFired_quick("lml9", true) || isFired_quick("lml10", true) || isFired_quick("eclmumu", true));
1702 bool CDC_fired = (isFired_quick("fff", true) || isFired_quick("ffo", true) || isFired_quick("ffb", true)
1703 || isFired_quick("ffy", true) || isFired_quick("fyo", true) || isFired_quick("fyb", true));
1704 bool ECL_fired = (isFired_quick("c4", true) || isFired_quick("hie", true));
1705 bool fff_fired = isFired_quick("fff");
1706 bool ff_fired = isFired_quick("ff");
1707 bool f_fired = isFired_quick("f");
1708 bool ffo_fired = isFired_quick("ffo");
1709 bool ffb_fired = isFired_quick("ffb");
1710 bool ffy_fired = isFired_quick("ffy");
1711 bool fyo_fired = isFired_quick("fyo");
1712 bool fyb_fired = isFired_quick("fyb");
1713 bool aaa_fired = isFired_quick("aaa");
1714 bool aay_fired = isFired_quick("aay");
1715 bool bha2D_fired = isFired_quick("bhabha");
1716 bool bha3D_fired = isFired_quick("bha3d");
1717 bool lml0_fired = isFired_quick("lml0");
1718 bool lml1_fired = isFired_quick("lml1");
1719 bool lml2_fired = isFired_quick("lml2");
1720 bool lml3_fired = isFired_quick("lml3");
1721 bool lml4_fired = isFired_quick("lml4");
1722 bool lml5_fired = isFired_quick("lml5");
1723 bool lml6_fired = isFired_quick("lml6");
1724 bool lml7_fired = isFired_quick("lml7");
1725 bool lml8_fired = isFired_quick("lml8");
1726 bool lml9_fired = isFired_quick("lml9");
1727 bool lml10_fired = isFired_quick("lml10");
1728 bool lml12_fired = isFired_quick("lml12");
1729 bool lml13_fired = isFired_quick("lml13");
1730 bool eclmumu_fired = isFired_quick("eclmumu");
1731 bool mu_b2b_fired = isFired_quick("mu_b2b");
1732 bool mu_eb2b_fired = isFired_quick("mu_eb2b");
1733 bool cdcklm1_fired = isFired_quick("cdcklm1");
1734 bool cdcklm2_fired = isFired_quick("cdcklm2");
1735 bool ycdcklm1_fired = isFired_quick("ycdcklm1");
1736 bool ycdcklm2_fired = isFired_quick("ycdcklm2");
1737 bool klm_hit_fired = isFired_quick("klm_hit");
1738 bool eklm_hit_fired = isFired_quick("eklm_hit");
1739 bool cdcecl1_fired = isFired_quick("cdcecl1");
1740 bool cdcecl2_fired = isFired_quick("cdcecl2");
1741 bool cdcecl3_fired = isFired_quick("cdcecl3");
1742 bool cdcecl4_fired = isFired_quick("cdcecl4");
1743 bool fso_fired = isFired_quick("fso");
1744 bool fsb_fired = isFired_quick("fsb");
1745 bool syo_fired = isFired_quick("syo");
1746 bool syb_fired = isFired_quick("syb");
1747 bool syoecl_fired = isFired_quick("syoecl");
1748 bool sybecl_fired = isFired_quick("sybecl");
1749 bool x_fired = isFired_quick("x");
1750 bool fioiecl1_fired = isFired_quick("fioiecl1");
1751 bool ecleklm1_fired = isFired_quick("ecleklm1");
1752 bool seklm1_fired = isFired_quick("seklm1");
1753 bool seklm2_fired = isFired_quick("seklm2");
1754 bool ieklm_fired = isFired_quick("ieklm");
1755 bool iecl_fired = isFired_quick("iecl");
1756 bool yioiecl1_fired = isFired_quick("yioiecl1");
1757 bool stt_fired = isFired_quick("stt");
1758 bool sttecl_fired = isFired_quick("sttecl");
1759 bool ffz_fired = isFired_quick("ffz");
1760 bool fzo_fired = isFired_quick("fzo");
1761 bool fzb_fired = isFired_quick("fzb");
1762
1763 for (unsigned ifill = 0; ifill < skim.size(); ifill++) {
1764
1765 for (int i = nsample_fast - 1; i > 0; i--) {
1766 for (int ibin = 0; ibin < n_output_extra; ibin++) {
1767 array_psn_extra_fast[skim[ifill]][i][ibin] = array_psn_extra_fast[skim[ifill]][i - 1][ibin];
1768 }
1769 }
1770 for (int ibin = 0; ibin < n_output_extra; ibin++) {
1771 array_psn_extra_fast[skim[ifill]][0][ibin] = 0;
1772 }
1773
1774 if (1) {
1775 h_psn_extra[skim[ifill]]->Fill(0.5);
1776 array_psn_extra_fast[skim[ifill]][0][0] = 1;
1777 }
1778 if (fff_fired && (ECL_fired)) {
1779 h_psn_extra[skim[ifill]]->Fill(1.5);
1780 array_psn_extra_fast[skim[ifill]][0][1] = 1;
1781 }
1782 if (ffo_fired && (ECL_fired)) {
1783 h_psn_extra[skim[ifill]]->Fill(2.5);
1784 array_psn_extra_fast[skim[ifill]][0][2] = 1;
1785 }
1786 if (ffb_fired && (ECL_fired)) {
1787 h_psn_extra[skim[ifill]]->Fill(3.5);
1788 array_psn_extra_fast[skim[ifill]][0][3] = 1;
1789 }
1790 if (fff_fired) {
1791 h_psn_extra[skim[ifill]]->Fill(4.5);
1792 array_psn_extra_fast[skim[ifill]][0][4] = 1;
1793 }
1794 if (ECL_fired) {
1795 h_psn_extra[skim[ifill]]->Fill(5.5);
1796 array_psn_extra_fast[skim[ifill]][0][5] = 1;
1797 }
1798 if (CDC_fired) {
1799 h_psn_extra[skim[ifill]]->Fill(6.5);
1800 array_psn_extra_fast[skim[ifill]][0][6] = 1;
1801 }
1802 if ((CDC_fired) && (ECL_fired)) {
1803 h_psn_extra[skim[ifill]]->Fill(7.5);
1804 array_psn_extra_fast[skim[ifill]][0][7] = 1;
1805 }
1806 if (bha2D_fired) {
1807 h_psn_extra[skim[ifill]]->Fill(8.5);
1808 array_psn_extra_fast[skim[ifill]][0][8] = 1;
1809 }
1810 if (bha3D_fired) {
1811 h_psn_extra[skim[ifill]]->Fill(9.5);
1812 array_psn_extra_fast[skim[ifill]][0][9] = 1;
1813 }
1814 if (ff_fired) {
1815 h_psn_extra[skim[ifill]]->Fill(10.5);
1816 array_psn_extra_fast[skim[ifill]][0][10] = 1;
1817 }
1818 if (ff_fired && (LML_fired)) {
1819 h_psn_extra[skim[ifill]]->Fill(11.5);
1820 array_psn_extra_fast[skim[ifill]][0][11] = 1;
1821 }
1822 if (f_fired) {
1823 h_psn_extra[skim[ifill]]->Fill(12.5);
1824 array_psn_extra_fast[skim[ifill]][0][12] = 1;
1825 }
1826 if (f_fired && (LML_fired)) {
1827 h_psn_extra[skim[ifill]]->Fill(13.5);
1828 array_psn_extra_fast[skim[ifill]][0][13] = 1;
1829 }
1830 if (LML_fired) {
1831 h_psn_extra[skim[ifill]]->Fill(14.5);
1832 array_psn_extra_fast[skim[ifill]][0][14] = 1;
1833 }
1834 if (fff_fired && (LML_fired)) {
1835 h_psn_extra[skim[ifill]]->Fill(15.5);
1836 array_psn_extra_fast[skim[ifill]][0][15] = 1;
1837 }
1838 if (ffo_fired && (LML_fired)) {
1839 h_psn_extra[skim[ifill]]->Fill(16.5);
1840 array_psn_extra_fast[skim[ifill]][0][16] = 1;
1841 }
1842 if (ffb_fired && (LML_fired)) {
1843 h_psn_extra[skim[ifill]]->Fill(17.5);
1844 array_psn_extra_fast[skim[ifill]][0][17] = 1;
1845 }
1846 if (ffy_fired) {
1847 h_psn_extra[skim[ifill]]->Fill(18.5);
1848 array_psn_extra_fast[skim[ifill]][0][18] = 1;
1849 }
1850 if (ffy_fired && (ECL_fired)) {
1851 h_psn_extra[skim[ifill]]->Fill(19.5);
1852 array_psn_extra_fast[skim[ifill]][0][19] = 1;
1853 }
1854 if (fyo_fired && (ECL_fired)) {
1855 h_psn_extra[skim[ifill]]->Fill(20.5);
1856 array_psn_extra_fast[skim[ifill]][0][20] = 1;
1857 }
1858 if (fyb_fired && (ECL_fired)) {
1859 h_psn_extra[skim[ifill]]->Fill(21.5);
1860 array_psn_extra_fast[skim[ifill]][0][21] = 1;
1861 }
1862 if ((ffy_fired || fyo_fired || fyb_fired) && (ECL_fired)) {
1863 h_psn_extra[skim[ifill]]->Fill(22.5);
1864 array_psn_extra_fast[skim[ifill]][0][22] = 1;
1865 }
1866 if (ffy_fired && (LML_fired)) {
1867 h_psn_extra[skim[ifill]]->Fill(23.5);
1868 array_psn_extra_fast[skim[ifill]][0][23] = 1;
1869 }
1870 if (fyo_fired && (LML_fired)) {
1871 h_psn_extra[skim[ifill]]->Fill(24.5);
1872 array_psn_extra_fast[skim[ifill]][0][24] = 1;
1873 }
1874 if (fyb_fired && (LML_fired)) {
1875 h_psn_extra[skim[ifill]]->Fill(25.5);
1876 array_psn_extra_fast[skim[ifill]][0][25] = 1;
1877 }
1878 if (c4_fired && (CDC_fired)) {
1879 h_psn_extra[skim[ifill]]->Fill(26.5);
1880 array_psn_extra_fast[skim[ifill]][0][26] = 1;
1881 }
1882 if (hie_fired && (CDC_fired)) {
1883 h_psn_extra[skim[ifill]]->Fill(27.5);
1884 array_psn_extra_fast[skim[ifill]][0][27] = 1;
1885 }
1886 if (lml0_fired && (CDC_fired)) {
1887 h_psn_extra[skim[ifill]]->Fill(28.5);
1888 array_psn_extra_fast[skim[ifill]][0][28] = 1;
1889 }
1890 if (lml1_fired && (CDC_fired)) {
1891 h_psn_extra[skim[ifill]]->Fill(29.5);
1892 array_psn_extra_fast[skim[ifill]][0][29] = 1;
1893 }
1894 if (lml2_fired && (CDC_fired)) {
1895 h_psn_extra[skim[ifill]]->Fill(30.5);
1896 array_psn_extra_fast[skim[ifill]][0][30] = 1;
1897 }
1898 if (lml3_fired && (CDC_fired)) {
1899 h_psn_extra[skim[ifill]]->Fill(31.5);
1900 array_psn_extra_fast[skim[ifill]][0][31] = 1;
1901 }
1902 if (lml4_fired && (CDC_fired)) {
1903 h_psn_extra[skim[ifill]]->Fill(32.5);
1904 array_psn_extra_fast[skim[ifill]][0][32] = 1;
1905 }
1906 if (lml5_fired && (CDC_fired)) {
1907 h_psn_extra[skim[ifill]]->Fill(33.5);
1908 array_psn_extra_fast[skim[ifill]][0][33] = 1;
1909 }
1910 if (lml6_fired && (CDC_fired)) {
1911 h_psn_extra[skim[ifill]]->Fill(34.5);
1912 array_psn_extra_fast[skim[ifill]][0][34] = 1;
1913 }
1914 if (lml7_fired && (CDC_fired)) {
1915 h_psn_extra[skim[ifill]]->Fill(35.5);
1916 array_psn_extra_fast[skim[ifill]][0][35] = 1;
1917 }
1918 if (lml8_fired && (CDC_fired)) {
1919 h_psn_extra[skim[ifill]]->Fill(36.5);
1920 array_psn_extra_fast[skim[ifill]][0][36] = 1;
1921 }
1922 if (lml9_fired && (CDC_fired)) {
1923 h_psn_extra[skim[ifill]]->Fill(37.5);
1924 array_psn_extra_fast[skim[ifill]][0][37] = 1;
1925 }
1926 if (lml10_fired && (CDC_fired)) {
1927 h_psn_extra[skim[ifill]]->Fill(38.5);
1928 array_psn_extra_fast[skim[ifill]][0][38] = 1;
1929 }
1930 if (lml12_fired && (CDC_fired)) {
1931 h_psn_extra[skim[ifill]]->Fill(39.5);
1932 array_psn_extra_fast[skim[ifill]][0][39] = 1;
1933 }
1934 if (lml13_fired && (CDC_fired)) {
1935 h_psn_extra[skim[ifill]]->Fill(40.5);
1936 array_psn_extra_fast[skim[ifill]][0][40] = 1;
1937 }
1938 if (eclmumu_fired && (CDC_fired)) {
1939 h_psn_extra[skim[ifill]]->Fill(41.5);
1940 array_psn_extra_fast[skim[ifill]][0][41] = 1;
1941 }
1942 if (mu_b2b_fired && (CDC_fired)) {
1943 h_psn_extra[skim[ifill]]->Fill(42.5);
1944 array_psn_extra_fast[skim[ifill]][0][42] = 1;
1945 }
1946 if (mu_eb2b_fired && (CDC_fired)) {
1947 h_psn_extra[skim[ifill]]->Fill(43.5);
1948 array_psn_extra_fast[skim[ifill]][0][43] = 1;
1949 }
1950 if (cdcklm1_fired && (CDC_fired)) {
1951 h_psn_extra[skim[ifill]]->Fill(44.5);
1952 array_psn_extra_fast[skim[ifill]][0][44] = 1;
1953 }
1954 if (cdcklm2_fired && (CDC_fired)) {
1955 h_psn_extra[skim[ifill]]->Fill(45.5);
1956 array_psn_extra_fast[skim[ifill]][0][45] = 1;
1957 }
1958 if (klm_hit_fired && (CDC_fired)) {
1959 h_psn_extra[skim[ifill]]->Fill(46.5);
1960 array_psn_extra_fast[skim[ifill]][0][46] = 1;
1961 }
1962 if (eklm_hit_fired && (CDC_fired)) {
1963 h_psn_extra[skim[ifill]]->Fill(47.5);
1964 array_psn_extra_fast[skim[ifill]][0][47] = 1;
1965 }
1966 if (mu_b2b_fired && LML_fired) {
1967 h_psn_extra[skim[ifill]]->Fill(48.5);
1968 array_psn_extra_fast[skim[ifill]][0][48] = 1;
1969 }
1970 if (mu_eb2b_fired && LML_fired) {
1971 h_psn_extra[skim[ifill]]->Fill(49.5);
1972 array_psn_extra_fast[skim[ifill]][0][49] = 1;
1973 }
1974 if (cdcklm1_fired && LML_fired) {
1975 h_psn_extra[skim[ifill]]->Fill(50.5);
1976 array_psn_extra_fast[skim[ifill]][0][50] = 1;
1977 }
1978 if (cdcklm2_fired && LML_fired) {
1979 h_psn_extra[skim[ifill]]->Fill(51.5);
1980 array_psn_extra_fast[skim[ifill]][0][51] = 1;
1981 }
1982 if (klm_hit_fired && LML_fired) {
1983 h_psn_extra[skim[ifill]]->Fill(52.5);
1984 array_psn_extra_fast[skim[ifill]][0][52] = 1;
1985 }
1986 if (eklm_hit_fired && LML_fired) {
1987 h_psn_extra[skim[ifill]]->Fill(53.5);
1988 array_psn_extra_fast[skim[ifill]][0][53] = 1;
1989 }
1990 if (cdcecl1_fired && (CDC_fired)) {
1991 h_psn_extra[skim[ifill]]->Fill(54.5);
1992 array_psn_extra_fast[skim[ifill]][0][54] = 1;
1993 }
1994 if (cdcecl2_fired && (CDC_fired)) {
1995 h_psn_extra[skim[ifill]]->Fill(55.5);
1996 array_psn_extra_fast[skim[ifill]][0][55] = 1;
1997 }
1998 if (cdcecl3_fired && (CDC_fired)) {
1999 h_psn_extra[skim[ifill]]->Fill(56.5);
2000 array_psn_extra_fast[skim[ifill]][0][56] = 1;
2001 }
2002 if (cdcecl4_fired && (CDC_fired)) {
2003 h_psn_extra[skim[ifill]]->Fill(57.5);
2004 array_psn_extra_fast[skim[ifill]][0][57] = 1;
2005 }
2006 if (cdcecl1_fired && LML_fired) {
2007 h_psn_extra[skim[ifill]]->Fill(58.5);
2008 array_psn_extra_fast[skim[ifill]][0][58] = 1;
2009 }
2010 if (cdcecl2_fired && LML_fired) {
2011 h_psn_extra[skim[ifill]]->Fill(59.5);
2012 array_psn_extra_fast[skim[ifill]][0][59] = 1;
2013 }
2014 if (cdcecl3_fired && LML_fired) {
2015 h_psn_extra[skim[ifill]]->Fill(60.5);
2016 array_psn_extra_fast[skim[ifill]][0][60] = 1;
2017 }
2018 if (cdcecl4_fired && LML_fired) {
2019 h_psn_extra[skim[ifill]]->Fill(61.5);
2020 array_psn_extra_fast[skim[ifill]][0][61] = 1;
2021 }
2022 if (fso_fired && LML_fired) {
2023 h_psn_extra[skim[ifill]]->Fill(62.5);
2024 array_psn_extra_fast[skim[ifill]][0][62] = 1;
2025 }
2026 if (fsb_fired && LML_fired) {
2027 h_psn_extra[skim[ifill]]->Fill(63.5);
2028 array_psn_extra_fast[skim[ifill]][0][63] = 1;
2029 }
2030 if (syo_fired && LML_fired) {
2031 h_psn_extra[skim[ifill]]->Fill(64.5);
2032 array_psn_extra_fast[skim[ifill]][0][64] = 1;
2033 }
2034 if (syb_fired && LML_fired) {
2035 h_psn_extra[skim[ifill]]->Fill(65.5);
2036 array_psn_extra_fast[skim[ifill]][0][65] = 1;
2037 }
2038 if (x_fired && LML_fired) {
2039 h_psn_extra[skim[ifill]]->Fill(66.5);
2040 array_psn_extra_fast[skim[ifill]][0][66] = 1;
2041 }
2042 if (fioiecl1_fired && LML_fired) {
2043 h_psn_extra[skim[ifill]]->Fill(67.5);
2044 array_psn_extra_fast[skim[ifill]][0][67] = 1;
2045 }
2046 if (ecleklm1_fired && LML_fired) {
2047 h_psn_extra[skim[ifill]]->Fill(68.5);
2048 array_psn_extra_fast[skim[ifill]][0][68] = 1;
2049 }
2050 if (seklm1_fired && LML_fired) {
2051 h_psn_extra[skim[ifill]]->Fill(69.5);
2052 array_psn_extra_fast[skim[ifill]][0][69] = 1;
2053 }
2054 if (seklm2_fired && LML_fired) {
2055 h_psn_extra[skim[ifill]]->Fill(70.5);
2056 array_psn_extra_fast[skim[ifill]][0][70] = 1;
2057 }
2058 if (ieklm_fired && LML_fired) {
2059 h_psn_extra[skim[ifill]]->Fill(71.5);
2060 array_psn_extra_fast[skim[ifill]][0][71] = 1;
2061 }
2062 if (iecl_fired && LML_fired) {
2063 h_psn_extra[skim[ifill]]->Fill(72.5);
2064 array_psn_extra_fast[skim[ifill]][0][72] = 1;
2065 }
2066 if (ecleklm1_fired && CDC_fired) {
2067 h_psn_extra[skim[ifill]]->Fill(73.5);
2068 array_psn_extra_fast[skim[ifill]][0][73] = 1;
2069 }
2070 if (syo_fired && ECL_fired) {
2071 h_psn_extra[skim[ifill]]->Fill(74.5);
2072 array_psn_extra_fast[skim[ifill]][0][74] = 1;
2073 }
2074 if (yioiecl1_fired && ECL_fired) {
2075 h_psn_extra[skim[ifill]]->Fill(75.5);
2076 array_psn_extra_fast[skim[ifill]][0][75] = 1;
2077 }
2078 if (stt_fired && ECL_fired) {
2079 h_psn_extra[skim[ifill]]->Fill(76.5);
2080 array_psn_extra_fast[skim[ifill]][0][76] = 1;
2081 }
2082 if (ffz_fired && (ECL_fired)) {
2083 h_psn_extra[skim[ifill]]->Fill(77.5);
2084 array_psn_extra_fast[skim[ifill]][0][77] = 1;
2085 }
2086 if (fzo_fired && (ECL_fired)) {
2087 h_psn_extra[skim[ifill]]->Fill(78.5);
2088 array_psn_extra_fast[skim[ifill]][0][78] = 1;
2089 }
2090 if (fzb_fired && (ECL_fired)) {
2091 h_psn_extra[skim[ifill]]->Fill(79.5);
2092 array_psn_extra_fast[skim[ifill]][0][79] = 1;
2093 }
2094 if (ffy_fired && ffz_fired && (ECL_fired)) {
2095 h_psn_extra[skim[ifill]]->Fill(80.5);
2096 array_psn_extra_fast[skim[ifill]][0][80] = 1;
2097 }
2098 if (fyo_fired && fzo_fired && (ECL_fired)) {
2099 h_psn_extra[skim[ifill]]->Fill(81.5);
2100 array_psn_extra_fast[skim[ifill]][0][81] = 1;
2101 }
2102 if (fyb_fired && fzb_fired && (ECL_fired)) {
2103 h_psn_extra[skim[ifill]]->Fill(82.5);
2104 array_psn_extra_fast[skim[ifill]][0][82] = 1;
2105 }
2106 if ((ffy_fired || ffz_fired) && (ECL_fired)) {
2107 h_psn_extra[skim[ifill]]->Fill(83.5);
2108 array_psn_extra_fast[skim[ifill]][0][83] = 1;
2109 }
2110 if ((fyo_fired || fzo_fired) && (ECL_fired)) {
2111 h_psn_extra[skim[ifill]]->Fill(84.5);
2112 array_psn_extra_fast[skim[ifill]][0][84] = 1;
2113 }
2114 if ((fyb_fired || fzb_fired) && (ECL_fired)) {
2115 h_psn_extra[skim[ifill]]->Fill(85.5);
2116 array_psn_extra_fast[skim[ifill]][0][85] = 1;
2117 }
2118 if (ffy_fired && ffz_fired) {
2119 h_psn_extra[skim[ifill]]->Fill(86.5);
2120 array_psn_extra_fast[skim[ifill]][0][86] = 1;
2121 }
2122 if (fyo_fired && fzo_fired) {
2123 h_psn_extra[skim[ifill]]->Fill(87.5);
2124 array_psn_extra_fast[skim[ifill]][0][87] = 1;
2125 }
2126 if (fyb_fired && fzb_fired) {
2127 h_psn_extra[skim[ifill]]->Fill(88.5);
2128 array_psn_extra_fast[skim[ifill]][0][88] = 1;
2129 }
2130 if (ffy_fired || ffz_fired) {
2131 h_psn_extra[skim[ifill]]->Fill(89.5);
2132 array_psn_extra_fast[skim[ifill]][0][89] = 1;
2133 }
2134 if (fyo_fired || fzo_fired) {
2135 h_psn_extra[skim[ifill]]->Fill(90.5);
2136 array_psn_extra_fast[skim[ifill]][0][90] = 1;
2137 }
2138 if (fyb_fired || fzb_fired) {
2139 h_psn_extra[skim[ifill]]->Fill(91.5);
2140 array_psn_extra_fast[skim[ifill]][0][91] = 1;
2141 }
2142 if (ffo_fired) {
2143 h_psn_extra[skim[ifill]]->Fill(92.5);
2144 array_psn_extra_fast[skim[ifill]][0][92] = 1;
2145 }
2146 if (ffb_fired) {
2147 h_psn_extra[skim[ifill]]->Fill(93.5);
2148 array_psn_extra_fast[skim[ifill]][0][93] = 1;
2149 }
2150 if (aaa_fired && ECL_fired) {
2151 h_psn_extra[skim[ifill]]->Fill(94.5);
2152 array_psn_extra_fast[skim[ifill]][0][94] = 1;
2153 }
2154 if (aay_fired && ECL_fired) {
2155 h_psn_extra[skim[ifill]]->Fill(95.5);
2156 array_psn_extra_fast[skim[ifill]][0][95] = 1;
2157 }
2158 if (ycdcklm1_fired && (CDC_fired)) {
2159 h_psn_extra[skim[ifill]]->Fill(96.5);
2160 array_psn_extra_fast[skim[ifill]][0][96] = 1;
2161 }
2162 if (ycdcklm2_fired && (CDC_fired)) {
2163 h_psn_extra[skim[ifill]]->Fill(97.5);
2164 array_psn_extra_fast[skim[ifill]][0][97] = 1;
2165 }
2166 if (ycdcklm1_fired && LML_fired) {
2167 h_psn_extra[skim[ifill]]->Fill(98.5);
2168 array_psn_extra_fast[skim[ifill]][0][98] = 1;
2169 }
2170 if (ycdcklm2_fired && LML_fired) {
2171 h_psn_extra[skim[ifill]]->Fill(99.5);
2172 array_psn_extra_fast[skim[ifill]][0][99] = 1;
2173 }
2174 if (sttecl_fired && ECL_fired) {
2175 h_psn_extra[skim[ifill]]->Fill(100.5);
2176 array_psn_extra_fast[skim[ifill]][0][100] = 1;
2177 }
2178 if (syoecl_fired && LML_fired) {
2179 h_psn_extra[skim[ifill]]->Fill(101.5);
2180 array_psn_extra_fast[skim[ifill]][0][101] = 1;
2181 }
2182 if (sybecl_fired && LML_fired) {
2183 h_psn_extra[skim[ifill]]->Fill(102.5);
2184 array_psn_extra_fast[skim[ifill]][0][102] = 1;
2185 }
2186 if (syoecl_fired && ECL_fired) {
2187 h_psn_extra[skim[ifill]]->Fill(103.5);
2188 array_psn_extra_fast[skim[ifill]][0][103] = 1;
2189 }
2190 if (sybecl_fired && ECL_fired) {
2191 h_psn_extra[skim[ifill]]->Fill(104.5);
2192 array_psn_extra_fast[skim[ifill]][0][104] = 1;
2193 }
2194
2195
2196 for (int ibin = 0; ibin < n_output_extra; ibin++) {
2197 int sum_psn_extra_fast = 0;
2198 for (int i = 0; i < nsample_fast; i++) {
2199 sum_psn_extra_fast += array_psn_extra_fast[skim[ifill]][i][ibin];
2200 }
2201 h_psn_extra_fast[skim[ifill]]->SetBinContent(ibin + 1, sum_psn_extra_fast);
2202 }
2203 }
2204
2205}

◆ fillOutputOverlap()

void fillOutputOverlap ( void  )
protected

Definition at line 1086 of file TRGGDLDQMModule.cc.

1087{
1088 for (unsigned ifill = 0; ifill < skim.size(); ifill++) {
1089 bool ffy_fired = isFired_quick("ffy", true);
1090 bool fyo_fired = isFired_quick("fyo", true) || isFired_quick("fyb", true);
1091 bool c4_fired = isFired_quick("c4", true);
1092 bool hie_fired = isFired_quick("hie", true);
1093 bool klm_fired = isFired_quick("mu_b2b", true) || isFired_quick("mu_eb2b", true) || isFired_quick("eklm2", true)
1094 || isFired_quick("beklm", true);
1095 bool klm_match_fired = isFired_quick("cdcklm1", true) || isFired_quick("cdcklm2", true)
1096 || isFired_quick("seklm1", true) || isFired_quick("seklm2", true)
1097 || isFired_quick("fwd_seklm", true) || isFired_quick("bwd_seklm", true)
1098 || isFired_quick("ieklm1", true) || isFired_quick("ecleklm1", true);
1099 bool stt_fired = isFired_quick("stt", true) || isFired_quick("sttecl", true);
1100 bool short_fired = isFired_quick("syo", true) || isFired_quick("syb", true) || isFired_quick("yioiecl1", true) ;
1101 bool ff30_fired = isFired_quick("fy30", true);
1102 bool inner_fired = isFired_quick("ioiecl2", true);
1103 bool lml_fired = isFired_quick("lml0", true) || isFired_quick("lml2", true) || isFired_quick("lml6", true)
1104 || isFired_quick("lml7", true) || isFired_quick("lml8", true) || isFired_quick("lml9", true)
1105 || isFired_quick("lml10", true)
1106 || isFired_quick("lml12", true) || isFired_quick("lml13", true)
1107 || isFired_quick("lml14", true) || isFired_quick("lml15", true) || isFired_quick("lml16", true);
1108 bool gg_fired = isFired_quick("ggsel", true);
1109 bool bhabha_fired = isFired_quick("bhapur", true);
1110 bool pid_fired = isFired_quick("ssb", true) || isFired_quick("eed", true) || isFired_quick("fed", true)
1111 || isFired_quick("yp", true)
1112 || isFired_quick("fp", true) || isFired_quick("shem", true) || isFired_quick("ohem", true);
1113 bool bhamon_fired = isFired_quick("bffo", true) || isFired_quick("bhie", true) || isFired_quick("lml3", true)
1114 || isFired_quick("lml5", true) || isFired_quick("bha3d", true) || isFired_quick("bhabha", true) || isFired_quick("lume", true);
1115 bool eclmumu_fired = isFired_quick("eclmumu", true);
1116 bool lml1_fired = isFired_quick("lml1", true);
1117 bool lml4_fired = isFired_quick("lml4", true);
1118 bool veto_fired = isFired_quick("hiev", true) || isFired_quick("fffv", true);
1119 bool random_fired = isFired_quick("bg", true) || isFired_quick("poissonv", true) || isFired_quick("revolution", true)
1120 || isFired_quick("random", true);
1121 bool ffz_fired = isFired_quick("ffz", true);
1122 bool fzo_fired = isFired_quick("fzo", true) || isFired_quick("fzb", true);
1123 bool trg_calib_fired = isFired_quick("c2", true) || isFired_quick("c3", true) || isFired_quick("eklmhit", true)
1124 || isFired_quick("f", true) || isFired_quick("s", true);
1125 bool cdcecl_calib_fired = isFired_quick("cdcecl3", true) || isFired_quick("cdcecl4", true);
1126// bool monitor_fired = isFired_quick("fff", true) || isFired_quick("ffo", true) || isFired_quick("ffb", true)
1127// || isFired_quick("fffo", true) || isFired_quick("ffs", true) || isFired_quick("fss", true) || isFired_quick("sss", true)
1128// || isFired_quick("ff", true) || isFired_quick("ss", true) || isFired_quick("fso", true)
1129// || isFired_quick("sso", true) || isFired_quick("fsb", true) || isFired_quick("ff30", true)
1130// || isFired_quick("lume", true) || isFired_quick("c2", true) || isFired_quick("c3", true)
1131// || isFired_quick("bha3d", true) || isFired_quick("bhabha", true)
1132// || isFired_quick("g_high", true) || isFired_quick("g_c1", true) || isFired_quick("gg", true)
1133// || isFired_quick("eklmhit", true) || isFired_quick("fioiecl1", true) || isFired_quick("ioiecl1", true)
1134// || isFired_quick("cdcecl1", true) || isFired_quick("cdcecl2", true) || isFired_quick("cdcecl3", true)
1135// || isFired_quick("cdcecl4", true) || isFired_quick("c2gev1", true) || isFired_quick("c2gev2", true)
1136// || isFired_quick("c2hie", true) || isFired_quick("f", true) || isFired_quick("s", true)
1137// || isFired_quick("revolution", true) || isFired_quick("random", true);
1138 bool monitor_fired = isFired_quick("fff", true) || isFired_quick("ffo", true) || isFired_quick("ffb", true)
1139 || isFired_quick("fffo", true) || isFired_quick("ffs", true) || isFired_quick("fss", true) || isFired_quick("sss", true)
1140 || isFired_quick("ff", true) || isFired_quick("ss", true) || isFired_quick("fso", true)
1141 || isFired_quick("sso", true) || isFired_quick("fsb", true) || isFired_quick("ff30", true)
1142 || isFired_quick("fioiecl1", true) || isFired_quick("ioiecl1", true)
1143 || isFired_quick("cdcecl1", true) || isFired_quick("cdcecl2", true)
1144 || isFired_quick("c2gev1", true) || isFired_quick("c2gev2", true)
1145 || isFired_quick("g_high", true) || isFired_quick("g_c1", true) || isFired_quick("gg", true)
1146 || isFired_quick("c2hie", true) || isFired_quick("stt6", true);
1147// bool monitor_fired = isFired_quick("c2hie", true);
1148
1149 bool B_CDC_fired = ffy_fired || fyo_fired;
1150 bool B_ECL_fired = c4_fired || hie_fired;
1151 bool LOW_KLM_fired = klm_fired || klm_match_fired;
1152 bool LOW_CDC_fired = stt_fired || short_fired || ff30_fired || inner_fired;
1153 bool LOW_ECL_fired = lml_fired || cdcecl_calib_fired;
1154 bool CALIB_fired = gg_fired || bhabha_fired || pid_fired || bhamon_fired || eclmumu_fired || lml1_fired || lml4_fired || veto_fired
1155 || random_fired || trg_calib_fired;
1156 bool MONITOR_fired = monitor_fired || ffz_fired || fzo_fired;
1157
1158 //all event
1159 if (1) {
1160 h_psn_effect_to_l1[skim[ifill]]->Fill(0.5);
1161 }
1162 //main category
1163 if (B_CDC_fired) {
1164 h_psn_effect_to_l1[skim[ifill]]->Fill(1.5);
1165 } else if (B_ECL_fired) {
1166 h_psn_effect_to_l1[skim[ifill]]->Fill(2.5);
1167 } else if (LOW_KLM_fired) {
1168 h_psn_effect_to_l1[skim[ifill]]->Fill(3.5);
1169 } else if (LOW_CDC_fired) {
1170 h_psn_effect_to_l1[skim[ifill]]->Fill(4.5);
1171 } else if (LOW_ECL_fired) {
1172 h_psn_effect_to_l1[skim[ifill]]->Fill(5.5);
1173 } else if (CALIB_fired) {
1174 h_psn_effect_to_l1[skim[ifill]]->Fill(6.5);
1175 } else if (MONITOR_fired) {
1176 h_psn_effect_to_l1[skim[ifill]]->Fill(7.5);
1177 } else {
1178 h_psn_effect_to_l1[skim[ifill]]->Fill(8.5);
1179 }
1180 //detail category
1181 if (ffy_fired) {
1182 h_psn_effect_to_l1[skim[ifill]]->Fill(9.5);
1183 } else if (fyo_fired) {
1184 h_psn_effect_to_l1[skim[ifill]]->Fill(10.5);
1185 } else if (c4_fired) {
1186 h_psn_effect_to_l1[skim[ifill]]->Fill(11.5);
1187 } else if (hie_fired) {
1188 h_psn_effect_to_l1[skim[ifill]]->Fill(12.5);
1189 } else if (klm_fired) {
1190 h_psn_effect_to_l1[skim[ifill]]->Fill(13.5);
1191 } else if (klm_match_fired) {
1192 h_psn_effect_to_l1[skim[ifill]]->Fill(14.5);
1193 } else if (stt_fired) {
1194 h_psn_effect_to_l1[skim[ifill]]->Fill(15.5);
1195 } else if (short_fired) {
1196 h_psn_effect_to_l1[skim[ifill]]->Fill(16.5);
1197 } else if (ff30_fired) {
1198 h_psn_effect_to_l1[skim[ifill]]->Fill(17.5);
1199 } else if (inner_fired) {
1200 h_psn_effect_to_l1[skim[ifill]]->Fill(18.5);
1201 } else if (lml_fired) {
1202 h_psn_effect_to_l1[skim[ifill]]->Fill(19.5);
1203 } else if (gg_fired) {
1204 h_psn_effect_to_l1[skim[ifill]]->Fill(20.5);
1205 } else if (bhabha_fired) {
1206 h_psn_effect_to_l1[skim[ifill]]->Fill(21.5);
1207 } else if (pid_fired) {
1208 h_psn_effect_to_l1[skim[ifill]]->Fill(22.5);
1209 } else if (bhamon_fired) {
1210 h_psn_effect_to_l1[skim[ifill]]->Fill(23.5);
1211 } else if (eclmumu_fired) {
1212 h_psn_effect_to_l1[skim[ifill]]->Fill(24.5);
1213 } else if (lml1_fired) {
1214 h_psn_effect_to_l1[skim[ifill]]->Fill(25.5);
1215 } else if (lml4_fired) {
1216 h_psn_effect_to_l1[skim[ifill]]->Fill(26.5);
1217 } else if (veto_fired) {
1218 h_psn_effect_to_l1[skim[ifill]]->Fill(27.5);
1219 } else if (random_fired) {
1220 h_psn_effect_to_l1[skim[ifill]]->Fill(28.5);
1221 } else if (ffz_fired) {
1222 h_psn_effect_to_l1[skim[ifill]]->Fill(29.5);
1223 } else if (fzo_fired) {
1224 h_psn_effect_to_l1[skim[ifill]]->Fill(30.5);
1225 } else if (monitor_fired) {
1226 h_psn_effect_to_l1[skim[ifill]]->Fill(31.5);
1227 } else {
1228 h_psn_effect_to_l1[skim[ifill]]->Fill(32.5);
1229 }
1230 //full dump without category
1231 if (isFired_quick("ffy", true)) {
1232 h_psn_effect_to_l1[skim[ifill]]->Fill(33.5);
1233 } else if (isFired_quick("fyb", true)) {
1234 h_psn_effect_to_l1[skim[ifill]]->Fill(34.5);
1235 } else if (isFired_quick("fyo", true)) {
1236 h_psn_effect_to_l1[skim[ifill]]->Fill(35.5);
1237 } else if (isFired_quick("c4", true)) {
1238 h_psn_effect_to_l1[skim[ifill]]->Fill(36.5);
1239 } else if (isFired_quick("hie", true)) {
1240 h_psn_effect_to_l1[skim[ifill]]->Fill(37.5);
1241 } else if (isFired_quick("mu_b2b", true)) {
1242 h_psn_effect_to_l1[skim[ifill]]->Fill(38.5);
1243 } else if (isFired_quick("mu_eb2b", true)) {
1244 h_psn_effect_to_l1[skim[ifill]]->Fill(39.5);
1245 } else if (isFired_quick("eklm2", true)) {
1246 h_psn_effect_to_l1[skim[ifill]]->Fill(40.5);
1247 } else if (isFired_quick("beklm", true)) {
1248 h_psn_effect_to_l1[skim[ifill]]->Fill(41.5);
1249 } else if (isFired_quick("cdcklm1", true)) {
1250 h_psn_effect_to_l1[skim[ifill]]->Fill(42.5);
1251 } else if (isFired_quick("cdcklm2", true)) {
1252 h_psn_effect_to_l1[skim[ifill]]->Fill(43.5);
1253 } else if (isFired_quick("seklm1", true)) {
1254 h_psn_effect_to_l1[skim[ifill]]->Fill(44.5);
1255 } else if (isFired_quick("seklm2", true)) {
1256 h_psn_effect_to_l1[skim[ifill]]->Fill(45.5);
1257 } else if (isFired_quick("fwd_seklm", true)) {
1258 h_psn_effect_to_l1[skim[ifill]]->Fill(46.5);
1259 } else if (isFired_quick("bwd_seklm", true)) {
1260 h_psn_effect_to_l1[skim[ifill]]->Fill(47.5);
1261 } else if (isFired_quick("ecleklm1", true)) {
1262 h_psn_effect_to_l1[skim[ifill]]->Fill(48.5);
1263 } else if (isFired_quick("ieklm1", true)) {
1264 h_psn_effect_to_l1[skim[ifill]]->Fill(49.5);
1265 } else if (isFired_quick("sttecl", true)) {
1266 h_psn_effect_to_l1[skim[ifill]]->Fill(50.5);
1267 } else if (isFired_quick("stt", true)) {
1268 h_psn_effect_to_l1[skim[ifill]]->Fill(51.5);
1269 } else if (isFired_quick("syb", true)) {
1270 h_psn_effect_to_l1[skim[ifill]]->Fill(52.5);
1271 } else if (isFired_quick("syo", true)) {
1272 h_psn_effect_to_l1[skim[ifill]]->Fill(53.5);
1273 } else if (isFired_quick("yioiecl1", true)) {
1274 h_psn_effect_to_l1[skim[ifill]]->Fill(54.5);
1275 } else if (isFired_quick("fy30", true)) {
1276 h_psn_effect_to_l1[skim[ifill]]->Fill(55.5);
1277 } else if (isFired_quick("ioiecl2", true)) {
1278 h_psn_effect_to_l1[skim[ifill]]->Fill(56.5);
1279 } else if (isFired_quick("lml0", true)) {
1280 h_psn_effect_to_l1[skim[ifill]]->Fill(57.5);
1281 } else if (isFired_quick("lml2", true)) {
1282 h_psn_effect_to_l1[skim[ifill]]->Fill(58.5);
1283 } else if (isFired_quick("lml6", true)) {
1284 h_psn_effect_to_l1[skim[ifill]]->Fill(59.5);
1285 } else if (isFired_quick("lml7", true)) {
1286 h_psn_effect_to_l1[skim[ifill]]->Fill(60.5);
1287 } else if (isFired_quick("lml8", true)) {
1288 h_psn_effect_to_l1[skim[ifill]]->Fill(61.5);
1289 } else if (isFired_quick("lml9", true)) {
1290 h_psn_effect_to_l1[skim[ifill]]->Fill(62.5);
1291 } else if (isFired_quick("lml10", true)) {
1292 h_psn_effect_to_l1[skim[ifill]]->Fill(63.5);
1293 } else if (isFired_quick("lml12", true)) {
1294 h_psn_effect_to_l1[skim[ifill]]->Fill(64.5);
1295 } else if (isFired_quick("lml13", true)) {
1296 h_psn_effect_to_l1[skim[ifill]]->Fill(65.5);
1297 } else if (isFired_quick("lml14", true)) {
1298 h_psn_effect_to_l1[skim[ifill]]->Fill(66.5);
1299 } else if (isFired_quick("lml15", true)) {
1300 h_psn_effect_to_l1[skim[ifill]]->Fill(67.5);
1301 } else if (isFired_quick("lml16", true)) {
1302 h_psn_effect_to_l1[skim[ifill]]->Fill(68.5);
1303 } else if (isFired_quick("ggsel", true)) {
1304 h_psn_effect_to_l1[skim[ifill]]->Fill(69.5);
1305 } else if (isFired_quick("bhapur", true)) {
1306 h_psn_effect_to_l1[skim[ifill]]->Fill(70.5);
1307 } else if (isFired_quick("lml3", true)) {
1308 h_psn_effect_to_l1[skim[ifill]]->Fill(71.5);
1309 } else if (isFired_quick("lml5", true)) {
1310 h_psn_effect_to_l1[skim[ifill]]->Fill(72.5);
1311 } else if (isFired_quick("bha3d", true)) {
1312 h_psn_effect_to_l1[skim[ifill]]->Fill(73.5);
1313 } else if (isFired_quick("bhabha", true)) {
1314 h_psn_effect_to_l1[skim[ifill]]->Fill(74.5);
1315 } else if (isFired_quick("lume", true)) {
1316 h_psn_effect_to_l1[skim[ifill]]->Fill(75.5);
1317 } else if (isFired_quick("bffo", true)) {
1318 h_psn_effect_to_l1[skim[ifill]]->Fill(76.5);
1319 } else if (isFired_quick("bhie", true)) {
1320 h_psn_effect_to_l1[skim[ifill]]->Fill(77.5);
1321 } else if (isFired_quick("eclmumu", true)) {
1322 h_psn_effect_to_l1[skim[ifill]]->Fill(78.5);
1323 } else if (isFired_quick("lml1", true)) {
1324 h_psn_effect_to_l1[skim[ifill]]->Fill(79.5);
1325 } else if (isFired_quick("lml4", true)) {
1326 h_psn_effect_to_l1[skim[ifill]]->Fill(80.5);
1327 } else if (isFired_quick("ssb", true)) {
1328 h_psn_effect_to_l1[skim[ifill]]->Fill(81.5);
1329 } else if (isFired_quick("eed", true)) {
1330 h_psn_effect_to_l1[skim[ifill]]->Fill(82.5);
1331 } else if (isFired_quick("fed", true)) {
1332 h_psn_effect_to_l1[skim[ifill]]->Fill(83.5);
1333 } else if (isFired_quick("yp", true)) {
1334 h_psn_effect_to_l1[skim[ifill]]->Fill(84.5);
1335 } else if (isFired_quick("fp", true)) {
1336 h_psn_effect_to_l1[skim[ifill]]->Fill(85.5);
1337 } else if (isFired_quick("shem", true)) {
1338 h_psn_effect_to_l1[skim[ifill]]->Fill(86.5);
1339 } else if (isFired_quick("ohem", true)) {
1340 h_psn_effect_to_l1[skim[ifill]]->Fill(87.5);
1341 } else if (isFired_quick("hiev", true)) {
1342 h_psn_effect_to_l1[skim[ifill]]->Fill(88.5);
1343 } else if (isFired_quick("fffv", true)) {
1344 h_psn_effect_to_l1[skim[ifill]]->Fill(89.5);
1345 } else if (isFired_quick("bg", true)) {
1346 h_psn_effect_to_l1[skim[ifill]]->Fill(90.5);
1347 } else if (isFired_quick("poissonv", true)) {
1348 h_psn_effect_to_l1[skim[ifill]]->Fill(91.5);
1349 } else if (isFired_quick("revolution", true)) {
1350 h_psn_effect_to_l1[skim[ifill]]->Fill(92.5);
1351 } else if (isFired_quick("random", true)) {
1352 h_psn_effect_to_l1[skim[ifill]]->Fill(93.5);
1353 } else if (isFired_quick("c2", true)) {
1354 h_psn_effect_to_l1[skim[ifill]]->Fill(94.5);
1355 } else if (isFired_quick("c3", true)) {
1356 h_psn_effect_to_l1[skim[ifill]]->Fill(95.5);
1357 } else if (isFired_quick("eklmhit", true)) {
1358 h_psn_effect_to_l1[skim[ifill]]->Fill(96.5);
1359 } else if (isFired_quick("f", true)) {
1360 h_psn_effect_to_l1[skim[ifill]]->Fill(97.5);
1361 } else if (isFired_quick("s", true)) {
1362 h_psn_effect_to_l1[skim[ifill]]->Fill(98.5);
1363 } else if (isFired_quick("y", true)) {
1364 h_psn_effect_to_l1[skim[ifill]]->Fill(99.5);
1365 } else if (isFired_quick("cdcecl3", true)) {
1366 h_psn_effect_to_l1[skim[ifill]]->Fill(100.5);
1367 } else if (isFired_quick("cdcecl4", true)) {
1368 h_psn_effect_to_l1[skim[ifill]]->Fill(101.5);
1369 } else if (isFired_quick("ffz", true)) {
1370 h_psn_effect_to_l1[skim[ifill]]->Fill(102.5);
1371 } else if (isFired_quick("fzb", true)) {
1372 h_psn_effect_to_l1[skim[ifill]]->Fill(103.5);
1373 } else if (isFired_quick("fzo", true)) {
1374 h_psn_effect_to_l1[skim[ifill]]->Fill(104.5);
1375 } else if (isFired_quick("fff", true)) {
1376 h_psn_effect_to_l1[skim[ifill]]->Fill(105.5);
1377 } else if (isFired_quick("ffb", true)) {
1378 h_psn_effect_to_l1[skim[ifill]]->Fill(106.5);
1379 } else if (isFired_quick("ffo", true)) {
1380 h_psn_effect_to_l1[skim[ifill]]->Fill(107.5);
1381 } else if (isFired_quick("fffo", true)) {
1382 h_psn_effect_to_l1[skim[ifill]]->Fill(108.5);
1383 } else if (isFired_quick("ffs", true)) {
1384 h_psn_effect_to_l1[skim[ifill]]->Fill(109.5);
1385 } else if (isFired_quick("fss", true)) {
1386 h_psn_effect_to_l1[skim[ifill]]->Fill(110.5);
1387 } else if (isFired_quick("sss", true)) {
1388 h_psn_effect_to_l1[skim[ifill]]->Fill(111.5);
1389 } else if (isFired_quick("ff", true)) {
1390 h_psn_effect_to_l1[skim[ifill]]->Fill(112.5);
1391 } else if (isFired_quick("ss", true)) {
1392 h_psn_effect_to_l1[skim[ifill]]->Fill(113.5);
1393 } else if (isFired_quick("fso", true)) {
1394 h_psn_effect_to_l1[skim[ifill]]->Fill(114.5);
1395 } else if (isFired_quick("sso", true)) {
1396 h_psn_effect_to_l1[skim[ifill]]->Fill(115.5);
1397 } else if (isFired_quick("fsb", true)) {
1398 h_psn_effect_to_l1[skim[ifill]]->Fill(116.5);
1399 } else if (isFired_quick("ff30", true)) {
1400 h_psn_effect_to_l1[skim[ifill]]->Fill(117.5);
1401 } else if (isFired_quick("fioiecl1", true)) {
1402 h_psn_effect_to_l1[skim[ifill]]->Fill(118.5);
1403 } else if (isFired_quick("ioiecl1", true)) {
1404 h_psn_effect_to_l1[skim[ifill]]->Fill(119.5);
1405 } else if (isFired_quick("cdcecl1", true)) {
1406 h_psn_effect_to_l1[skim[ifill]]->Fill(120.5);
1407 } else if (isFired_quick("cdcecl2", true)) {
1408 h_psn_effect_to_l1[skim[ifill]]->Fill(121.5);
1409 } else if (isFired_quick("c2gev1", true)) {
1410 h_psn_effect_to_l1[skim[ifill]]->Fill(122.5);
1411 } else if (isFired_quick("c2gev2", true)) {
1412 h_psn_effect_to_l1[skim[ifill]]->Fill(123.5);
1413 } else if (isFired_quick("c2hie", true)) {
1414 h_psn_effect_to_l1[skim[ifill]]->Fill(124.5);
1415 } else if (isFired_quick("g_high", true)) {
1416 h_psn_effect_to_l1[skim[ifill]]->Fill(125.5);
1417 } else if (isFired_quick("g_c1", true)) {
1418 h_psn_effect_to_l1[skim[ifill]]->Fill(126.5);
1419 } else if (isFired_quick("gg", true)) {
1420 h_psn_effect_to_l1[skim[ifill]]->Fill(127.5);
1421 } else if (isFired_quick("stt6", true)) {
1422 h_psn_effect_to_l1[skim[ifill]]->Fill(128.5);
1423 } else {
1424 h_psn_effect_to_l1[skim[ifill]]->Fill(129.5);
1425 }
1426
1427 //all event
1428 if (1) {
1429 h_psn_raw_rate[skim[ifill]]->Fill(0.5);
1430 }
1431 //main category
1432 if (B_CDC_fired) {
1433 h_psn_raw_rate[skim[ifill]]->Fill(1.5);
1434 } if (B_ECL_fired) {
1435 h_psn_raw_rate[skim[ifill]]->Fill(2.5);
1436 } if (LOW_KLM_fired) {
1437 h_psn_raw_rate[skim[ifill]]->Fill(3.5);
1438 } if (LOW_CDC_fired) {
1439 h_psn_raw_rate[skim[ifill]]->Fill(4.5);
1440 } if (LOW_ECL_fired) {
1441 h_psn_raw_rate[skim[ifill]]->Fill(5.5);
1442 } if (CALIB_fired) {
1443 h_psn_raw_rate[skim[ifill]]->Fill(6.5);
1444 } if (MONITOR_fired) {
1445 h_psn_raw_rate[skim[ifill]]->Fill(7.5);
1446 }
1447 //detail category
1448 if (ffy_fired) {
1449 h_psn_raw_rate[skim[ifill]]->Fill(9.5);
1450 } if (fyo_fired) {
1451 h_psn_raw_rate[skim[ifill]]->Fill(10.5);
1452 } if (c4_fired) {
1453 h_psn_raw_rate[skim[ifill]]->Fill(11.5);
1454 } if (hie_fired) {
1455 h_psn_raw_rate[skim[ifill]]->Fill(12.5);
1456 } if (klm_fired) {
1457 h_psn_raw_rate[skim[ifill]]->Fill(13.5);
1458 } if (klm_match_fired) {
1459 h_psn_raw_rate[skim[ifill]]->Fill(14.5);
1460 } if (stt_fired) {
1461 h_psn_raw_rate[skim[ifill]]->Fill(15.5);
1462 } if (short_fired) {
1463 h_psn_raw_rate[skim[ifill]]->Fill(16.5);
1464 } if (ff30_fired) {
1465 h_psn_raw_rate[skim[ifill]]->Fill(17.5);
1466 } if (inner_fired) {
1467 h_psn_raw_rate[skim[ifill]]->Fill(18.5);
1468 } if (lml_fired) {
1469 h_psn_raw_rate[skim[ifill]]->Fill(19.5);
1470 } if (gg_fired) {
1471 h_psn_raw_rate[skim[ifill]]->Fill(20.5);
1472 } if (bhabha_fired) {
1473 h_psn_raw_rate[skim[ifill]]->Fill(21.5);
1474 } if (pid_fired) {
1475 h_psn_raw_rate[skim[ifill]]->Fill(22.5);
1476 } if (bhamon_fired) {
1477 h_psn_raw_rate[skim[ifill]]->Fill(23.5);
1478 } if (eclmumu_fired) {
1479 h_psn_raw_rate[skim[ifill]]->Fill(24.5);
1480 } if (lml1_fired) {
1481 h_psn_raw_rate[skim[ifill]]->Fill(25.5);
1482 } if (lml4_fired) {
1483 h_psn_raw_rate[skim[ifill]]->Fill(26.5);
1484 } if (veto_fired) {
1485 h_psn_raw_rate[skim[ifill]]->Fill(27.5);
1486 } if (random_fired) {
1487 h_psn_raw_rate[skim[ifill]]->Fill(28.5);
1488 } if (ffz_fired) {
1489 h_psn_raw_rate[skim[ifill]]->Fill(29.5);
1490 } if (fzo_fired) {
1491 h_psn_raw_rate[skim[ifill]]->Fill(30.5);
1492 } if (monitor_fired) {
1493 h_psn_raw_rate[skim[ifill]]->Fill(31.5);
1494 }
1495 //full dump without category
1496 if (isFired_quick("ffy", true)) {
1497 h_psn_raw_rate[skim[ifill]]->Fill(33.5);
1498 } if (isFired_quick("fyb", true)) {
1499 h_psn_raw_rate[skim[ifill]]->Fill(34.5);
1500 } if (isFired_quick("fyo", true)) {
1501 h_psn_raw_rate[skim[ifill]]->Fill(35.5);
1502 } if (isFired_quick("c4", true)) {
1503 h_psn_raw_rate[skim[ifill]]->Fill(36.5);
1504 } if (isFired_quick("hie", true)) {
1505 h_psn_raw_rate[skim[ifill]]->Fill(37.5);
1506 } if (isFired_quick("mu_b2b", true)) {
1507 h_psn_raw_rate[skim[ifill]]->Fill(38.5);
1508 } if (isFired_quick("mu_eb2b", true)) {
1509 h_psn_raw_rate[skim[ifill]]->Fill(39.5);
1510 } if (isFired_quick("eklm2", true)) {
1511 h_psn_raw_rate[skim[ifill]]->Fill(40.5);
1512 } if (isFired_quick("beklm", true)) {
1513 h_psn_raw_rate[skim[ifill]]->Fill(41.5);
1514 } if (isFired_quick("cdcklm1", true)) {
1515 h_psn_raw_rate[skim[ifill]]->Fill(42.5);
1516 } if (isFired_quick("cdcklm2", true)) {
1517 h_psn_raw_rate[skim[ifill]]->Fill(43.5);
1518 } if (isFired_quick("seklm1", true)) {
1519 h_psn_raw_rate[skim[ifill]]->Fill(44.5);
1520 } if (isFired_quick("seklm2", true)) {
1521 h_psn_raw_rate[skim[ifill]]->Fill(45.5);
1522 } if (isFired_quick("fwd_seklm", true)) {
1523 h_psn_raw_rate[skim[ifill]]->Fill(46.5);
1524 } if (isFired_quick("bwd_seklm", true)) {
1525 h_psn_raw_rate[skim[ifill]]->Fill(47.5);
1526 } if (isFired_quick("ecleklm1", true)) {
1527 h_psn_raw_rate[skim[ifill]]->Fill(48.5);
1528 } if (isFired_quick("ieklm1", true)) {
1529 h_psn_raw_rate[skim[ifill]]->Fill(49.5);
1530 } if (isFired_quick("sttecl", true)) {
1531 h_psn_raw_rate[skim[ifill]]->Fill(50.5);
1532 } if (isFired_quick("stt", true)) {
1533 h_psn_raw_rate[skim[ifill]]->Fill(51.5);
1534 } if (isFired_quick("syb", true)) {
1535 h_psn_raw_rate[skim[ifill]]->Fill(52.5);
1536 } if (isFired_quick("syo", true)) {
1537 h_psn_raw_rate[skim[ifill]]->Fill(53.5);
1538 } if (isFired_quick("yioiecl1", true)) {
1539 h_psn_raw_rate[skim[ifill]]->Fill(54.5);
1540 } if (isFired_quick("fy30", true)) {
1541 h_psn_raw_rate[skim[ifill]]->Fill(55.5);
1542 } if (isFired_quick("ioiecl2", true)) {
1543 h_psn_raw_rate[skim[ifill]]->Fill(56.5);
1544 } if (isFired_quick("lml0", true)) {
1545 h_psn_raw_rate[skim[ifill]]->Fill(57.5);
1546 } if (isFired_quick("lml2", true)) {
1547 h_psn_raw_rate[skim[ifill]]->Fill(58.5);
1548 } if (isFired_quick("lml6", true)) {
1549 h_psn_raw_rate[skim[ifill]]->Fill(59.5);
1550 } if (isFired_quick("lml7", true)) {
1551 h_psn_raw_rate[skim[ifill]]->Fill(60.5);
1552 } if (isFired_quick("lml8", true)) {
1553 h_psn_raw_rate[skim[ifill]]->Fill(61.5);
1554 } if (isFired_quick("lml9", true)) {
1555 h_psn_raw_rate[skim[ifill]]->Fill(62.5);
1556 } if (isFired_quick("lml10", true)) {
1557 h_psn_raw_rate[skim[ifill]]->Fill(63.5);
1558 } if (isFired_quick("lml12", true)) {
1559 h_psn_raw_rate[skim[ifill]]->Fill(64.5);
1560 } if (isFired_quick("lml13", true)) {
1561 h_psn_raw_rate[skim[ifill]]->Fill(65.5);
1562 } if (isFired_quick("lml14", true)) {
1563 h_psn_raw_rate[skim[ifill]]->Fill(66.5);
1564 } if (isFired_quick("lml15", true)) {
1565 h_psn_raw_rate[skim[ifill]]->Fill(67.5);
1566 } if (isFired_quick("lml16", true)) {
1567 h_psn_raw_rate[skim[ifill]]->Fill(68.5);
1568 } if (isFired_quick("ggsel", true)) {
1569 h_psn_raw_rate[skim[ifill]]->Fill(69.5);
1570 } if (isFired_quick("bhapur", true)) {
1571 h_psn_raw_rate[skim[ifill]]->Fill(70.5);
1572 } if (isFired_quick("lml3", true)) {
1573 h_psn_raw_rate[skim[ifill]]->Fill(71.5);
1574 } if (isFired_quick("lml5", true)) {
1575 h_psn_raw_rate[skim[ifill]]->Fill(72.5);
1576 } if (isFired_quick("bha3d", true)) {
1577 h_psn_raw_rate[skim[ifill]]->Fill(73.5);
1578 } if (isFired_quick("bhabha", true)) {
1579 h_psn_raw_rate[skim[ifill]]->Fill(74.5);
1580 } if (isFired_quick("lume", true)) {
1581 h_psn_raw_rate[skim[ifill]]->Fill(75.5);
1582 } if (isFired_quick("bffo", true)) {
1583 h_psn_raw_rate[skim[ifill]]->Fill(76.5);
1584 } if (isFired_quick("bhie", true)) {
1585 h_psn_raw_rate[skim[ifill]]->Fill(77.5);
1586 } if (isFired_quick("eclmumu", true)) {
1587 h_psn_raw_rate[skim[ifill]]->Fill(78.5);
1588 } if (isFired_quick("lml1", true)) {
1589 h_psn_raw_rate[skim[ifill]]->Fill(79.5);
1590 } if (isFired_quick("lml4", true)) {
1591 h_psn_raw_rate[skim[ifill]]->Fill(80.5);
1592 } if (isFired_quick("ssb", true)) {
1593 h_psn_raw_rate[skim[ifill]]->Fill(81.5);
1594 } if (isFired_quick("eed", true)) {
1595 h_psn_raw_rate[skim[ifill]]->Fill(82.5);
1596 } if (isFired_quick("fed", true)) {
1597 h_psn_raw_rate[skim[ifill]]->Fill(83.5);
1598 } if (isFired_quick("yp", true)) {
1599 h_psn_raw_rate[skim[ifill]]->Fill(84.5);
1600 } if (isFired_quick("fp", true)) {
1601 h_psn_raw_rate[skim[ifill]]->Fill(85.5);
1602 } if (isFired_quick("shem", true)) {
1603 h_psn_raw_rate[skim[ifill]]->Fill(86.5);
1604 } if (isFired_quick("ohem", true)) {
1605 h_psn_raw_rate[skim[ifill]]->Fill(87.5);
1606 } if (isFired_quick("hiev", true)) {
1607 h_psn_raw_rate[skim[ifill]]->Fill(88.5);
1608 } if (isFired_quick("fffv", true)) {
1609 h_psn_raw_rate[skim[ifill]]->Fill(89.5);
1610 } if (isFired_quick("bg", true)) {
1611 h_psn_raw_rate[skim[ifill]]->Fill(90.5);
1612 } if (isFired_quick("poissonv", true)) {
1613 h_psn_raw_rate[skim[ifill]]->Fill(91.5);
1614 } if (isFired_quick("revolution", true)) {
1615 h_psn_raw_rate[skim[ifill]]->Fill(92.5);
1616 } if (isFired_quick("random", true)) {
1617 h_psn_raw_rate[skim[ifill]]->Fill(93.5);
1618 } if (isFired_quick("c2", true)) {
1619 h_psn_raw_rate[skim[ifill]]->Fill(94.5);
1620 } if (isFired_quick("c3", true)) {
1621 h_psn_raw_rate[skim[ifill]]->Fill(95.5);
1622 } if (isFired_quick("eklmhit", true)) {
1623 h_psn_raw_rate[skim[ifill]]->Fill(96.5);
1624 } if (isFired_quick("f", true)) {
1625 h_psn_raw_rate[skim[ifill]]->Fill(97.5);
1626 } if (isFired_quick("s", true)) {
1627 h_psn_raw_rate[skim[ifill]]->Fill(98.5);
1628 } if (isFired_quick("y", true)) {
1629 h_psn_raw_rate[skim[ifill]]->Fill(99.5);
1630 } if (isFired_quick("cdcecl3", true)) {
1631 h_psn_raw_rate[skim[ifill]]->Fill(100.5);
1632 } if (isFired_quick("cdcecl4", true)) {
1633 h_psn_raw_rate[skim[ifill]]->Fill(101.5);
1634 } if (isFired_quick("ffz", true)) {
1635 h_psn_raw_rate[skim[ifill]]->Fill(102.5);
1636 } if (isFired_quick("fzb", true)) {
1637 h_psn_raw_rate[skim[ifill]]->Fill(103.5);
1638 } if (isFired_quick("fzo", true)) {
1639 h_psn_raw_rate[skim[ifill]]->Fill(104.5);
1640 } if (isFired_quick("fff", true)) {
1641 h_psn_raw_rate[skim[ifill]]->Fill(105.5);
1642 } if (isFired_quick("ffb", true)) {
1643 h_psn_raw_rate[skim[ifill]]->Fill(106.5);
1644 } if (isFired_quick("ffo", true)) {
1645 h_psn_raw_rate[skim[ifill]]->Fill(107.5);
1646 } if (isFired_quick("fffo", true)) {
1647 h_psn_raw_rate[skim[ifill]]->Fill(108.5);
1648 } if (isFired_quick("ffs", true)) {
1649 h_psn_raw_rate[skim[ifill]]->Fill(109.5);
1650 } if (isFired_quick("fss", true)) {
1651 h_psn_raw_rate[skim[ifill]]->Fill(110.5);
1652 } if (isFired_quick("sss", true)) {
1653 h_psn_raw_rate[skim[ifill]]->Fill(111.5);
1654 } if (isFired_quick("ff", true)) {
1655 h_psn_raw_rate[skim[ifill]]->Fill(112.5);
1656 } if (isFired_quick("ss", true)) {
1657 h_psn_raw_rate[skim[ifill]]->Fill(113.5);
1658 } if (isFired_quick("fso", true)) {
1659 h_psn_raw_rate[skim[ifill]]->Fill(114.5);
1660 } if (isFired_quick("sso", true)) {
1661 h_psn_raw_rate[skim[ifill]]->Fill(115.5);
1662 } if (isFired_quick("fsb", true)) {
1663 h_psn_raw_rate[skim[ifill]]->Fill(116.5);
1664 } if (isFired_quick("ff30", true)) {
1665 h_psn_raw_rate[skim[ifill]]->Fill(117.5);
1666 } if (isFired_quick("fioiecl1", true)) {
1667 h_psn_raw_rate[skim[ifill]]->Fill(118.5);
1668 } if (isFired_quick("ioiecl1", true)) {
1669 h_psn_raw_rate[skim[ifill]]->Fill(119.5);
1670 } if (isFired_quick("cdcecl1", true)) {
1671 h_psn_raw_rate[skim[ifill]]->Fill(120.5);
1672 } if (isFired_quick("cdcecl2", true)) {
1673 h_psn_raw_rate[skim[ifill]]->Fill(121.5);
1674 } if (isFired_quick("c2gev1", true)) {
1675 h_psn_raw_rate[skim[ifill]]->Fill(122.5);
1676 } if (isFired_quick("c2gev2", true)) {
1677 h_psn_raw_rate[skim[ifill]]->Fill(123.5);
1678 } if (isFired_quick("c2hie", true)) {
1679 h_psn_raw_rate[skim[ifill]]->Fill(124.5);
1680 } if (isFired_quick("g_high", true)) {
1681 h_psn_raw_rate[skim[ifill]]->Fill(125.5);
1682 } if (isFired_quick("g_c1", true)) {
1683 h_psn_raw_rate[skim[ifill]]->Fill(126.5);
1684 } if (isFired_quick("gg", true)) {
1685 h_psn_raw_rate[skim[ifill]]->Fill(127.5);
1686 } if (isFired_quick("stt6", true)) {
1687 h_psn_raw_rate[skim[ifill]]->Fill(128.5);
1688 }
1689 }
1690}

◆ fillOutputPureExtra()

void fillOutputPureExtra ( void  )
protected

Definition at line 2331 of file TRGGDLDQMModule.cc.

2332{
2333 //get offline CDC track information
2334 int n_fulltrack = 0;
2335 float max_dphi = 0;
2336 float phi_list[100];
2337 for (int itrack = 0; itrack < Tracks.getEntries(); itrack++) {
2338 const TrackFitResult* tfr = Tracks[itrack]->getTrackFitResult(Const::pion);
2339 if (tfr == nullptr) continue;
2340
2341 float z0 = tfr->getZ0();
2342 float d0 = tfr->getD0();
2343 float phi = tfr->getPhi();
2344 //float omega = tfr->getOmega();
2345 int flayer = tfr->getHitPatternCDC().getFirstLayer();
2346 int llayer = tfr->getHitPatternCDC().getLastLayer();
2347 float pt = tfr->getTransverseMomentum();
2348 if (z0 > -1 && z0 < 1 && d0 > -1 && d0 < 1 && flayer < 8 && llayer > 50
2349 && pt > 0.3) { //select track from IP, hit SL0 and SL8, pt>0.3GeV
2350 phi_list[n_fulltrack] = phi;
2351 n_fulltrack += 1;
2352 }
2353 }
2354 for (int i = 0; i < n_fulltrack; i++) {
2355 for (int j = 0; j < n_fulltrack; j++) {
2356 float dphi = phi_list[i] - phi_list[j];
2357 if (dphi < 0) dphi = -dphi;
2358 if (dphi > 3.14) dphi = 2 * 3.14 - dphi;
2359 if (dphi > max_dphi) max_dphi = dphi;
2360 }
2361 }
2362
2363 //get offline ECL cluster information
2364 //double total_energy = 0;
2365 //for (int iclst = 0; iclst < ECLClusters.getEntries(); iclst++) {
2366 // total_energy += ECLClusters[iclst]->getEnergyRaw();
2367 //}
2368 //
2369 //
2370 int ecl_timing_threshold_low = -200; // (ns) xtal timing selection
2371 int ecl_timing_threshold_high = 200; // (ns) xtal timing selection
2372 double ecl_xtcid_energy_sum[576] = {0};
2373 double total_energy = 0;
2374 int ncluster = 0;
2375 for (const auto& eclcalhit : m_ECLCalDigitData) {
2376
2377 // (ecl) calibation status check and cut
2378 if (!eclcalhit.isCalibrated()) {continue;}
2379 if (eclcalhit.isFailedFit()) {continue;}
2380 if (eclcalhit.isTimeResolutionFailed()) {continue;}
2381
2382 // (ecl) xtal-id
2383 int ecl_cid = (double) eclcalhit.getCellId();
2384
2385 // (ecl) fitter quality check and cut
2386 int ecl_quality = -1;
2387 for (const auto& eclhit : m_ECLDigitData) {
2388 if (ecl_cid == eclhit.getCellId()) {
2389 ecl_quality = (int) eclhit.getQuality();
2390 }
2391 }
2392 if (ecl_quality != 0) {continue;}
2393
2394 // (ecl) xtal energy
2395 double ecl_xtal_energy = eclcalhit.getEnergy(); // ECLCalDigit
2396
2397
2398 // (ecl) timing cut
2399 int ecl_timing = eclcalhit.getTime();
2400 if (ecl_timing < ecl_timing_threshold_low ||
2401 ecl_timing > ecl_timing_threshold_high) {continue;}
2402
2403 // (ecl) tc-id for xtal-id
2404 int ecl_tcid = trgeclmap->getTCIdFromXtalId(ecl_cid);
2405 int ecl_thetaid = trgeclmap->getTCThetaIdFromTCId(ecl_tcid);
2406
2407 if (ecl_tcid >= 0 && ecl_tcid < 576 && ecl_thetaid >= 2 && ecl_thetaid <= 15) { //pick up only 2=<thetaid=<15
2408 ecl_xtcid_energy_sum[ecl_tcid] = ecl_xtcid_energy_sum[ecl_tcid] + ecl_xtal_energy;
2409 //ecltimingsum[i] = ecl_timing;
2410 }
2411 }
2412
2413 for (int i = 0; i < 576; i++) {
2414 if (ecl_xtcid_energy_sum[i] > 0.1) {
2415 total_energy += ecl_xtcid_energy_sum[i];
2416 ncluster += 1;
2417 }
2418 }
2419
2420 //get offline KLM cluster information
2421
2422
2423 //fff: require the number of CDC full tracks is more than or equal to 3
2424 if (n_fulltrack > 2) {
2425 bool fff_fired = isFired_quick("fff");
2426 bool ffy_fired = isFired_quick("ffy");
2427 bool c4_fired = isFired_quick("c4");
2428 bool hie_fired = isFired_quick("hie");
2429 if (c4_fired || hie_fired) {
2430 h_psn_pure_extra[0]->Fill(0.5);
2431 }
2432 if (fff_fired && (c4_fired || hie_fired)) {
2433 h_psn_pure_extra[0]->Fill(1.5);
2434 }
2435 if (ffy_fired && (c4_fired || hie_fired)) {
2436 h_psn_pure_extra[0]->Fill(2.5);
2437 }
2438 }
2439 //ffo: require the number of CDC full tracks is more than or equal to 2, opening angle > 90deg
2440 if (n_fulltrack > 1 && max_dphi > 3.14 / 2.) {
2441 bool ffo_fired = isFired_quick("ffo");
2442 bool fyo_fired = isFired_quick("fyo");
2443 bool c4_fired = isFired_quick("c4");
2444 bool hie_fired = isFired_quick("hie");
2445 if (c4_fired || hie_fired) {
2446 h_psn_pure_extra[0]->Fill(3.5);
2447 }
2448 if (ffo_fired && (c4_fired || hie_fired)) {
2449 h_psn_pure_extra[0]->Fill(4.5);
2450 }
2451 if (fyo_fired && (c4_fired || hie_fired)) {
2452 h_psn_pure_extra[0]->Fill(5.5);
2453 }
2454 }
2455 //ffo: require the number of CDC full tracks is more than or equal to 2, opening angle >150deg
2456 if (n_fulltrack > 1 && max_dphi > 3.14 * 5 / 6.) {
2457 bool ffb_fired = isFired_quick("ffb");
2458 bool fyb_fired = isFired_quick("fyb");
2459 bool c4_fired = isFired_quick("c4");
2460 bool hie_fired = isFired_quick("hie");
2461 if (c4_fired || hie_fired) {
2462 h_psn_pure_extra[0]->Fill(6.5);
2463 }
2464 if (ffb_fired && (c4_fired || hie_fired)) {
2465 h_psn_pure_extra[0]->Fill(7.5);
2466 }
2467 if (fyb_fired && (c4_fired || hie_fired)) {
2468 h_psn_pure_extra[0]->Fill(8.5);
2469 }
2470 }
2471
2472 //hie: require the total energy of ECL cluster is more than 1GeV
2473 if (total_energy > 1) {
2474 bool fff_fired = isFired_quick("fff");
2475 bool ffo_fired = isFired_quick("ffo");
2476 bool ffb_fired = isFired_quick("ffb");
2477 bool hie_fired = isFired_quick("hie");
2478 if (fff_fired || ffo_fired || ffb_fired) {
2479 h_psn_pure_extra[0]->Fill(9.5);
2480 }
2481 if (hie_fired && (fff_fired || ffo_fired || ffb_fired)) {
2482 h_psn_pure_extra[0]->Fill(10.5);
2483 }
2484 }
2485
2486 //c4: require the total number of cluster is more than 3
2487 if (ncluster > 3) {
2488 bool fff_fired = isFired_quick("fff");
2489 bool ffo_fired = isFired_quick("ffo");
2490 bool ffb_fired = isFired_quick("ffb");
2491 bool c4_fired = isFired_quick("c4");
2492 if (fff_fired || ffo_fired || ffb_fired) {
2493 h_psn_pure_extra[0]->Fill(11.5);
2494 }
2495 if (c4_fired && (fff_fired || ffo_fired || ffb_fired)) {
2496 h_psn_pure_extra[0]->Fill(12.5);
2497 }
2498 }
2499
2500}
static const ChargedStable pion
charged pion particle
Definition: Const.h:661
short getLastLayer() const
Returns the index of the last layer with a hit.
short getFirstLayer() const
Returns the index of the first layer with a hit.
Values of the result of a track fit with a given particle hypothesis.
double getPhi() const
Getter for phi0 with CDF naming convention.
double getD0() const
Getter for d0.
double getTransverseMomentum() const
Getter for the absolute value of the transverse momentum at the perigee.
double getZ0() const
Getter for z0.
HitPatternCDC getHitPatternCDC() const
Getter for the hit pattern in the CDC;.
int getTCThetaIdFromTCId(int)
get [TC Theta ID] from [TC ID]
int getTCIdFromXtalId(int)
get [TC ID] from [Xtal ID]

◆ fillRiseFallTimings()

void fillRiseFallTimings ( void  )
protected

Definition at line 991 of file TRGGDLDQMModule.cc.

992{
993
994
995 for (unsigned ifill = 0; ifill < skim.size(); ifill++) {
996 //reduce #plot
997 if (skim[ifill] != 0)continue;
998
999 for (unsigned i = 0; i < n_inbit; i++) {
1000 if (n_clocks == 32) {
1001 h_itd_rise[i][skim[ifill]]->GetXaxis()->SetTitle("clk32ns");
1002 h_itd_fall[i][skim[ifill]]->GetXaxis()->SetTitle("clk32ns");
1003 h_itd_rise[i][skim[ifill]]->GetXaxis()->SetRange(1, 32);
1004 h_itd_fall[i][skim[ifill]]->GetXaxis()->SetRange(1, 32);
1005 } else {
1006 h_itd_rise[i][skim[ifill]]->GetXaxis()->SetTitle("clk8ns");
1007 h_itd_fall[i][skim[ifill]]->GetXaxis()->SetTitle("clk8ns");
1008 }
1009 bool rising_done = false;
1010 bool falling_done = false;
1011 for (unsigned clk = 0; clk < n_clocks; clk++) {
1012 if (h_i_vec[clk * n_inbit + i] > 0) {
1013 if (! rising_done) {
1014 h_itd_rise[i][skim[ifill]]->Fill(clk + 0.5);
1015 rising_done = true;
1016 // cppcheck-suppress knownConditionTrueFalse
1017 } else if (rising_done && !falling_done && clk == n_clocks - 1) {
1018 h_itd_fall[i][skim[ifill]]->Fill(clk + 0.5);
1019 }
1020 } else if (h_i_vec[clk * n_inbit + i] == 0) {
1021 if (rising_done && ! falling_done) {
1022 h_itd_fall[i][skim[ifill]]->Fill(clk + 0.5);
1023 falling_done = true;
1024 }
1025 }
1026 }
1027 }
1028 for (unsigned i = 0; i < n_outbit; i++) {
1029 if (n_clocks == 32) {
1030 h_ftd_rise[i][skim[ifill]]->GetXaxis()->SetTitle("clk32ns");
1031 h_psn_rise[i][skim[ifill]]->GetXaxis()->SetTitle("clk32ns");
1032 h_ftd_fall[i][skim[ifill]]->GetXaxis()->SetTitle("clk32ns");
1033 h_psn_fall[i][skim[ifill]]->GetXaxis()->SetTitle("clk32ns");
1034 h_ftd_rise[i][skim[ifill]]->GetXaxis()->SetRange(1, 32);
1035 h_psn_rise[i][skim[ifill]]->GetXaxis()->SetRange(1, 32);
1036 h_ftd_fall[i][skim[ifill]]->GetXaxis()->SetRange(1, 32);
1037 h_psn_fall[i][skim[ifill]]->GetXaxis()->SetRange(1, 32);
1038 } else {
1039 h_ftd_rise[i][skim[ifill]]->GetXaxis()->SetTitle("clk8ns");
1040 h_psn_rise[i][skim[ifill]]->GetXaxis()->SetTitle("clk8ns");
1041 h_ftd_fall[i][skim[ifill]]->GetXaxis()->SetTitle("clk8ns");
1042 h_psn_fall[i][skim[ifill]]->GetXaxis()->SetTitle("clk8ns");
1043 }
1044 bool rising_done = false;
1045 bool falling_done = false;
1046 for (unsigned clk = 0; clk < n_clocks; clk++) {
1047 if (h_f_vec[clk * n_outbit + i] > 0) {
1048 if (! rising_done) {
1049 h_ftd_rise[i][skim[ifill]]->Fill(clk + 0.5);
1050 rising_done = true;
1051 // cppcheck-suppress knownConditionTrueFalse
1052 } else if (rising_done && !falling_done && clk == n_clocks - 1) {
1053 h_ftd_fall[i][skim[ifill]]->Fill(clk + 0.5);
1054 }
1055 } else if (h_f_vec[clk * n_outbit + i] == 0) {
1056 if (rising_done && ! falling_done) {
1057 h_ftd_fall[i][skim[ifill]]->Fill(clk + 0.5);
1058 falling_done = true;
1059 }
1060 }
1061 }
1062 rising_done = false;
1063 falling_done = false;
1064 for (unsigned clk = 0; clk < n_clocks; clk++) {
1065 if (h_p_vec[clk * n_outbit + i] > 0) {
1066 if (! rising_done) {
1067 h_psn_rise[i][skim[ifill]]->Fill(clk + 0.5);
1068 rising_done = true;
1069 // cppcheck-suppress knownConditionTrueFalse
1070 } else if (rising_done && !falling_done && clk == n_clocks - 1) {
1071 h_psn_fall[i][skim[ifill]]->Fill(clk + 0.5);
1072 }
1073 } else if (h_p_vec[clk * n_outbit + i] == 0) {
1074 if (rising_done && ! falling_done) {
1075 h_psn_fall[i][skim[ifill]]->Fill(clk + 0.5);
1076 falling_done = true;
1077 }
1078 }
1079 }
1080 }
1081 }
1082}

◆ genVcd()

void genVcd ( void  )
protected

Definition at line 829 of file TRGGDLDQMModule.cc.

830{
831 int prev_i[400] = {0};
832 int prev_f[400] = {0};
833 int prev_p[400] = {0};
834 //int prev_g[400]={0}; // Future Plan
835 ofstream outf(Form("vcd/e%02dr%08de%08d.vcd", _exp, _run, evtno));
836 outf << "$date" << endl;
837 outf << " Aug 20, 2018 17:53:52" << endl;
838 outf << "$end" << endl;
839 outf << "$version" << endl;
840 outf << " ChipScope Pro Analyzer 14.7 P.20131013 (Build 14700.13.286.464)" << endl;
841 outf << "$end" << endl;
842 outf << "$timescale" << endl;
843 if (n_clocks == 32) {
844 outf << " 32ns" << endl;
845 } else if (n_clocks == 48) {
846 outf << " 8ns" << endl;
847 } else {
848 outf << " 1ns" << endl;
849 }
850 outf << "$end" << endl;
851 outf << "" << endl;
852 outf << "$scope module gdl0067d_icn $end" << endl;
853 int seqnum = 0;
854 for (unsigned j = 0; j < n_inbit; j++) {
855 outf << "$var wire 1 n" << seqnum++ << " " << inbitname[j] << " $end" << endl;
856 }
857 for (unsigned j = 0; j < n_outbit; j++) {
858 outf << "$var wire 1 n" << seqnum++ << " ftd." << outbitname[j] << " $end" << endl;
859 }
860 for (unsigned j = 0; j < n_outbit; j++) {
861 outf << "$var wire 1 n" << seqnum++ << " psn." << outbitname[j] << " $end" << endl;
862 }
863
864 outf << "$upscope $end" << endl;
865 outf << "$enddefinitions $end" << endl << endl;
866
867 for (unsigned clk = 1; clk <= n_clocks; clk++) {
868 seqnum = 0;
869 outf << "#" << clk - 1 << endl;
870 for (unsigned k = 1; k <= n_inbit; k++) {
871 if (clk == 1 || prev_i[k - 1] != h_i_vec[(clk - 1)*n_inbit + k - 1]) {
872 prev_i[k - 1] = h_i_vec[(clk - 1) * n_inbit + k - 1];
873 outf << h_i_vec[(clk - 1)*n_inbit + k - 1] << "n" << seqnum << endl;
874 }
875 seqnum++;
876 }
877 for (unsigned k = 1; k <= n_outbit; k++) {
878 if (clk == 1 || prev_f[k - 1] != h_f_vec[(clk - 1)*n_outbit + k - 1]) {
879 prev_f[k - 1] = h_f_vec[(clk - 1) * n_outbit + k - 1];
880 outf << h_f_vec[(clk - 1)*n_outbit + k - 1] << "n" << seqnum << endl;
881 }
882 seqnum++;
883 }
884 for (unsigned k = 1; k <= n_outbit; k++) {
885 if (clk == 1 || prev_p[k - 1] != h_p_vec[(clk - 1)*n_outbit + k - 1]) {
886 prev_p[k - 1] = h_p_vec[(clk - 1) * n_outbit + k - 1];
887 outf << h_p_vec[(clk - 1)*n_outbit + k - 1] << "n" << seqnum << endl;
888 }
889 seqnum++;
890 }
891 /* Future Plan
892 for(unsigned k=1; k<=n_gdlbits; k++){
893 if(clk == 1 || prev_g[k-1] != hg->GetBinContent(clk, k)){
894 prev_g[k-1] = hg->GetBinContent(clk, k);
895 if(EBitWidth[k-1] != 1){
896 char ans[33];
897 if(k-1 == e_rvc){
898 dec2binstring(hg->GetBinContent(clk, k), ans, true);
899 }else{
900 dec2binstring(hg->GetBinContent(clk, k), ans);
901 }
902 outf << "b" << ans << " n" << seqnum << endl;
903 }else{
904 outf << hg->GetBinContent(clk, k) << "n" << seqnum << endl;
905 }
906 }
907 seqnum++;
908 }
909 */
910 }
911 outf.close();
912}

◆ getAfterConditionPath()

Module::EAfterConditionPath getAfterConditionPath ( ) const
inherited

What to do after the conditional path is finished.

(defaults to c_End if no condition is set)

Definition at line 133 of file Module.cc.

134{
135 if (m_conditions.empty()) return EAfterConditionPath::c_End;
136
137 //okay, a condition was set for this Module...
138 if (!m_hasReturnValue) {
139 B2FATAL("A condition was set for '" << getName() << "', but the module did not set a return value!");
140 }
141
142 for (const auto& condition : m_conditions) {
143 if (condition.evaluate(m_returnValue)) {
144 return condition.getAfterConditionPath();
145 }
146 }
147
148 return EAfterConditionPath::c_End;
149}

◆ getAllConditionPaths()

std::vector< std::shared_ptr< Path > > getAllConditionPaths ( ) const
inherited

Return all condition paths currently set (no matter if the condition is true or not).

Definition at line 150 of file Module.cc.

151{
152 std::vector<std::shared_ptr<Path>> allConditionPaths;
153 for (const auto& condition : m_conditions) {
154 allConditionPaths.push_back(condition.getPath());
155 }
156
157 return allConditionPaths;
158}

◆ getAllConditions()

const std::vector< ModuleCondition > & getAllConditions ( ) const
inlineinherited

Return all set conditions for this module.

Definition at line 324 of file Module.h.

325 {
326 return m_conditions;
327 }

◆ getCondition()

const ModuleCondition * getCondition ( ) const
inlineinherited

Return a pointer to the first condition (or nullptr, if none was set)

Definition at line 314 of file Module.h.

315 {
316 if (m_conditions.empty()) {
317 return nullptr;
318 } else {
319 return &m_conditions.front();
320 }
321 }

◆ getConditionPath()

std::shared_ptr< Path > getConditionPath ( ) const
inherited

Returns the path of the last true condition (if there is at least one, else reaturn a null pointer).


Definition at line 113 of file Module.cc.

114{
115 PathPtr p;
116 if (m_conditions.empty()) return p;
117
118 //okay, a condition was set for this Module...
119 if (!m_hasReturnValue) {
120 B2FATAL("A condition was set for '" << getName() << "', but the module did not set a return value!");
121 }
122
123 for (const auto& condition : m_conditions) {
124 if (condition.evaluate(m_returnValue)) {
125 return condition.getPath();
126 }
127 }
128
129 // if none of the conditions were true, return a null pointer.
130 return p;
131}
std::shared_ptr< Path > PathPtr
Defines a pointer to a path object as a boost shared pointer.
Definition: Path.h:35

◆ getDescription()

const std::string & getDescription ( ) const
inlineinherited

Returns the description of the module.

Definition at line 202 of file Module.h.

202{return m_description;}
std::string m_description
The description of the module.
Definition: Module.h:511

◆ getFileNames()

virtual std::vector< std::string > getFileNames ( bool  outputFiles)
inlinevirtualinherited

Return a list of output filenames for this modules.

This will be called when basf2 is run with "--dry-run" if the module has set either the c_Input or c_Output properties.

If the parameter outputFiles is false (for modules with c_Input) the list of input filenames should be returned (if any). If outputFiles is true (for modules with c_Output) the list of output files should be returned (if any).

If a module has sat both properties this member is called twice, once for each property.

The module should return the actual list of requested input or produced output filenames (including handling of input/output overrides) so that the grid system can handle input/output files correctly.

This function should return the same value when called multiple times. This is especially important when taking the input/output overrides from Environment as they get consumed when obtained so the finalized list of output files should be stored for subsequent calls.

Reimplemented in RootInputModule, StorageRootOutputModule, and RootOutputModule.

Definition at line 134 of file Module.h.

135 {
136 return std::vector<std::string>();
137 }

◆ getinbitnum()

int getinbitnum ( const char *  c) const
protected

Definition at line 940 of file TRGGDLDQMModule.cc.

941{
942 for (int i = 0; i < 320; i++) {
943 if (strcmp(c, inbitname[i]) == 0)return i;
944 }
945 return -1;
946}

◆ getLogConfig()

LogConfig & getLogConfig ( )
inlineinherited

Returns the log system configuration.

Definition at line 225 of file Module.h.

225{return m_logConfig;}

◆ getModules()

std::list< ModulePtr > getModules ( ) const
inlineoverrideprivatevirtualinherited

no submodules, return empty list

Implements PathElement.

Definition at line 506 of file Module.h.

506{ return std::list<ModulePtr>(); }

◆ getName()

const std::string & getName ( ) const
inlineinherited

Returns the name of the module.

This can be changed via e.g. set_name() in the steering file to give more useful names if there is more than one module of the same type.

For identifying the type of a module, using getType() (or type() in Python) is recommended.

Definition at line 187 of file Module.h.

187{return m_name;}
std::string m_name
The name of the module, saved as a string (user-modifiable)
Definition: Module.h:508

◆ getoutbitnum()

int getoutbitnum ( const char *  c) const
protected

Definition at line 949 of file TRGGDLDQMModule.cc.

950{
951 for (int i = 0; i < 320; i++) {
952 if (strcmp(c, outbitname[i]) == 0)return i;
953 }
954 return -1;
955}

◆ getPackage()

const std::string & getPackage ( ) const
inlineinherited

Returns the package this module is in.

Definition at line 197 of file Module.h.

197{return m_package;}

◆ getParamInfoListPython()

std::shared_ptr< boost::python::list > getParamInfoListPython ( ) const
inherited

Returns a python list of all parameters.

Each item in the list consists of the name of the parameter, a string describing its type, a python list of all default values and the description of the parameter.

Returns
A python list containing the parameters of this parameter list.

Definition at line 279 of file Module.cc.

280{
282}
std::shared_ptr< boost::python::list > getParamInfoListPython() const
Returns a python list of all parameters.
ModuleParamList m_moduleParamList
List storing and managing all parameter of the module.
Definition: Module.h:516

◆ getParamList()

const ModuleParamList & getParamList ( ) const
inlineinherited

Return module param list.

Definition at line 363 of file Module.h.

363{ return m_moduleParamList; }

◆ getPathString()

std::string getPathString ( ) const
overrideprivatevirtualinherited

return the module name.

Implements PathElement.

Definition at line 192 of file Module.cc.

193{
194
195 std::string output = getName();
196
197 for (const auto& condition : m_conditions) {
198 output += condition.getString();
199 }
200
201 return output;
202}

◆ getReturnValue()

int getReturnValue ( ) const
inlineinherited

Return the return value set by this module.

This value is only meaningful if hasReturnValue() is true

Definition at line 381 of file Module.h.

381{ return m_returnValue; }

◆ getType()

const std::string & getType ( ) const
inherited

Returns the type of the module (i.e.

class name minus 'Module')

Definition at line 41 of file Module.cc.

42{
43 if (m_type.empty())
44 B2FATAL("Module type not set for " << getName());
45 return m_type;
46}
std::string m_type
The type of the module, saved as a string.
Definition: Module.h:509

◆ hasCondition()

bool hasCondition ( ) const
inlineinherited

Returns true if at least one condition was set for the module.

Definition at line 311 of file Module.h.

311{ return not m_conditions.empty(); };

◆ hasProperties()

bool hasProperties ( unsigned int  propertyFlags) const
inherited

Returns true if all specified property flags are available in this module.

Parameters
propertyFlagsOred EModulePropFlags which should be compared with the module flags.

Definition at line 160 of file Module.cc.

161{
162 return (propertyFlags & m_propertyFlags) == propertyFlags;
163}

◆ hasReturnValue()

bool hasReturnValue ( ) const
inlineinherited

Return true if this module has a valid return value set.

Definition at line 378 of file Module.h.

378{ return m_hasReturnValue; }

◆ hasUnsetForcedParams()

bool hasUnsetForcedParams ( ) const
inherited

Returns true and prints error message if the module has unset parameters which the user has to set in the steering file.

Definition at line 166 of file Module.cc.

167{
169 std::string allMissing = "";
170 for (const auto& s : missing)
171 allMissing += s + " ";
172 if (!missing.empty())
173 B2ERROR("The following required parameters of Module '" << getName() << "' were not specified: " << allMissing <<
174 "\nPlease add them to your steering file.");
175 return !missing.empty();
176}
std::vector< std::string > getUnsetForcedParams() const
Returns list of unset parameters (if they are required to have a value.

◆ if_false()

void if_false ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression "<1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is false.
afterConditionPathWhat to do after executing 'path'.

Definition at line 85 of file Module.cc.

86{
87 if_value("<1", path, afterConditionPath);
88}

◆ if_true()

void if_true ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to set the condition of the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression ">=1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 90 of file Module.cc.

91{
92 if_value(">=1", path, afterConditionPath);
93}

◆ if_value()

void if_value ( const std::string &  expression,
const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

Add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

See https://xwiki.desy.de/xwiki/rest/p/a94f2 or ModuleCondition for a description of the syntax.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

Parameters
expressionThe expression of the condition.
pathShared pointer to the Path which will be executed if the condition is evaluated to true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 79 of file Module.cc.

80{
81 m_conditions.emplace_back(expression, path, afterConditionPath);
82}

◆ initialize()

void initialize ( void  )
overridevirtual

initialize

Reimplemented from HistoModule.

Definition at line 284 of file TRGGDLDQMModule.cc.

285{
286
287 if (m_skim == 0) { //no skim
288 start_skim_gdldqm = 0;
289 end_skim_gdldqm = 1;
290 } else if (m_skim == 1) { //skim
291 start_skim_gdldqm = 1;
292 end_skim_gdldqm = nskim_gdldqm;
293 } else { //no skim + skim
294 start_skim_gdldqm = 0;
295 end_skim_gdldqm = nskim_gdldqm;
296 }
297
298 _exp = bevt->getExperiment();
299 _run = bevt->getRun();
300
301 trgeclmap = new TrgEclMapping();
302
303 // calls back the defineHisto() function, but the HistoManager module has to be in the path
304 REG_HISTOGRAM
305
306 for (int i = 0; i < 320; i++) {
307 LeafBitMap[i] = m_unpacker->getLeafMap(i);
308 }
309 for (int i = 0; i < 320; i++) {
310 strcpy(LeafNames[i], m_unpacker->getLeafnames(i));
311 }
312 _e_timtype = 0;
313 _e_gdll1rvc = 0;
314 _e_coml1rvc = 0;
315 _e_toptiming = 0;
316 _e_ecltiming = 0;
317 _e_cdctiming = 0;
318 _e_toprvc = 0;
319 _e_eclrvc = 0;
320 _e_cdcrvc = 0;
321 for (int i = 0; i < 10; i++) {
322 ee_psn[i] = {0};
323 ee_ftd[i] = {0};
324 ee_itd[i] = {0};
325 }
326 for (int i = 0; i < 320; i++) {
327 if (strcmp(LeafNames[i], "timtype") == 0) _e_timtype = LeafBitMap[i];
328 if (strcmp(LeafNames[i], "gdll1rvc") == 0) _e_gdll1rvc = LeafBitMap[i];
329 if (strcmp(LeafNames[i], "coml1rvc") == 0) _e_coml1rvc = LeafBitMap[i];
330 if (strcmp(LeafNames[i], "toptiming") == 0)_e_toptiming = LeafBitMap[i];
331 if (strcmp(LeafNames[i], "ecltiming") == 0)_e_ecltiming = LeafBitMap[i];
332 if (strcmp(LeafNames[i], "cdctiming") == 0)_e_cdctiming = LeafBitMap[i];
333 if (strcmp(LeafNames[i], "toprvc") == 0) _e_toprvc = LeafBitMap[i];
334 if (strcmp(LeafNames[i], "eclrvc") == 0) _e_eclrvc = LeafBitMap[i];
335 if (strcmp(LeafNames[i], "cdcrvc") == 0) _e_cdcrvc = LeafBitMap[i];
336 if (strcmp(LeafNames[i], "psn0") == 0) ee_psn[0] = LeafBitMap[i];
337 if (strcmp(LeafNames[i], "psn1") == 0) ee_psn[1] = LeafBitMap[i];
338 if (strcmp(LeafNames[i], "psn2") == 0) ee_psn[2] = LeafBitMap[i];
339 if (strcmp(LeafNames[i], "psn3") == 0) ee_psn[3] = LeafBitMap[i];
340 if (strcmp(LeafNames[i], "psn4") == 0) ee_psn[4] = LeafBitMap[i];
341 if (strcmp(LeafNames[i], "psn5") == 0) ee_psn[5] = LeafBitMap[i];
342 if (strcmp(LeafNames[i], "psn6") == 0) ee_psn[6] = LeafBitMap[i];
343 if (strcmp(LeafNames[i], "psn7") == 0) ee_psn[7] = LeafBitMap[i];
344 if (strcmp(LeafNames[i], "psn8") == 0) ee_psn[8] = LeafBitMap[i];
345 if (strcmp(LeafNames[i], "psn9") == 0) ee_psn[9] = LeafBitMap[i];
346 if (strcmp(LeafNames[i], "ftd0") == 0) ee_ftd[0] = LeafBitMap[i];
347 if (strcmp(LeafNames[i], "ftd1") == 0) ee_ftd[1] = LeafBitMap[i];
348 if (strcmp(LeafNames[i], "ftd2") == 0) ee_ftd[2] = LeafBitMap[i];
349 if (strcmp(LeafNames[i], "ftd3") == 0) ee_ftd[3] = LeafBitMap[i];
350 if (strcmp(LeafNames[i], "ftd4") == 0) ee_ftd[4] = LeafBitMap[i];
351 if (strcmp(LeafNames[i], "ftd5") == 0) ee_ftd[5] = LeafBitMap[i];
352 if (strcmp(LeafNames[i], "ftd6") == 0) ee_ftd[6] = LeafBitMap[i];
353 if (strcmp(LeafNames[i], "ftd7") == 0) ee_ftd[7] = LeafBitMap[i];
354 if (strcmp(LeafNames[i], "ftd8") == 0) ee_ftd[8] = LeafBitMap[i];
355 if (strcmp(LeafNames[i], "ftd9") == 0) ee_ftd[9] = LeafBitMap[i];
356 if (strcmp(LeafNames[i], "itd0") == 0) ee_itd[0] = LeafBitMap[i];
357 if (strcmp(LeafNames[i], "itd1") == 0) ee_itd[1] = LeafBitMap[i];
358 if (strcmp(LeafNames[i], "itd2") == 0) ee_itd[2] = LeafBitMap[i];
359 if (strcmp(LeafNames[i], "itd3") == 0) ee_itd[3] = LeafBitMap[i];
360 if (strcmp(LeafNames[i], "itd4") == 0) ee_itd[4] = LeafBitMap[i];
361 if (strcmp(LeafNames[i], "itd5") == 0) ee_itd[5] = LeafBitMap[i];
362 if (strcmp(LeafNames[i], "itd6") == 0) ee_itd[6] = LeafBitMap[i];
363 if (strcmp(LeafNames[i], "itd7") == 0) ee_itd[7] = LeafBitMap[i];
364 if (strcmp(LeafNames[i], "itd8") == 0) ee_itd[8] = LeafBitMap[i];
365 if (strcmp(LeafNames[i], "itd9") == 0) ee_itd[9] = LeafBitMap[i];
366 }
367
368 n_inbit = m_dbinput->getninbit();
369 n_outbit = m_dbftdl ->getnoutbit();
370 for (int i = 0; i < 320; i++) {
371 strcpy(inbitname[i], m_dbinput->getinbitname(i));
372 }
373 for (int i = 0; i < 320; i++) {
374 strcpy(outbitname[i], m_dbftdl->getoutbitname(i));
375 }
376 n_leafs = m_unpacker->getnLeafs();
377 n_leafsExtra = m_unpacker->getnLeafsExtra();
378 n_clocks = m_unpacker->getnClks();
379 nconf = m_unpacker->getconf();
380 nword_input = m_unpacker->get_nword_input();
381 nword_output = m_unpacker->get_nword_output();
382
383 for (unsigned i = 0; i < n_clocks; i++) {
384 for (int j = 0; j < n_leafs + n_leafsExtra; j++)h_0_vec.push_back(0);
385 for (unsigned int j = 0; j < n_outbit; j++) h_p_vec.push_back(0);
386 for (unsigned int j = 0; j < n_outbit; j++) h_f_vec.push_back(0);
387 for (unsigned int j = 0; j < n_inbit; j++) h_i_vec.push_back(0);
388 }
389
390 for (int iskim = 0; iskim < nskim_gdldqm; iskim++) {
391 for (int i = 0; i < nsample_fast; i++) {
392 for (int ibin = 0; ibin < n_output_extra; ibin++) {
393 array_psn_extra_fast[iskim][i][ibin] = 0;
394 }
395 }
396 }
397
398}
A class of TC Mapping.
Definition: TrgEclMapping.h:26

◆ isFired()

bool isFired ( std::string  bitname)
protected

Definition at line 959 of file TRGGDLDQMModule.cc.

960{
961 bool isPsnm = false;
962 for (unsigned i = 0; i < bitname.length(); i++) {
963 if ('A' <= bitname[i] && bitname[i] <= 'Z') {
964 isPsnm = true;
965 }
966 }
967 boost::algorithm::to_lower(bitname);
968 int bn = m_dbftdl->getoutbitnum(bitname.c_str());
969 for (unsigned clk = 0; clk < n_clocks; clk++) {
970 if (bn > -1) {
971 if (isPsnm) {
972 if (h_p_vec[clk * n_outbit + bn] > 0)
973 return true;
974 } else {
975 if (h_f_vec[clk * n_outbit + bn] > 0)
976 return true;
977 }
978 }
979 }
980 bn = m_dbinput->getinbitnum(bitname.c_str());
981 for (unsigned clk = 0; clk < n_clocks; clk++) {
982 if (bn > -1) {
983 if (h_i_vec[clk * n_inbit + bn] > 0)
984 return true;
985 }
986 }
987 return false;
988}

◆ isFired_quick()

bool isFired_quick ( const std::string &  bitname,
const bool &  isPsnm = 0 
)
protected

Definition at line 915 of file TRGGDLDQMModule.cc.

916{
917 int bn = getoutbitnum(bitname.c_str());
918 for (unsigned clk = 0; clk < n_clocks; clk++) {
919 if (bn > -1) {
920 if (isPsnm) {
921 if (h_p_vec[clk * n_outbit + bn] > 0)
922 return true;
923 } else {
924 if (h_f_vec[clk * n_outbit + bn] > 0)
925 return true;
926 }
927 }
928 }
929 bn = getinbitnum(bitname.c_str());
930 for (unsigned clk = 0; clk < n_clocks; clk++) {
931 if (bn > -1) {
932 if (h_i_vec[clk * n_inbit + bn] > 0)
933 return true;
934 }
935 }
936 return false;
937}

◆ setAbortLevel()

void setAbortLevel ( int  abortLevel)
inherited

Configure the abort log level.

Definition at line 67 of file Module.cc.

68{
69 m_logConfig.setAbortLevel(static_cast<LogConfig::ELogLevel>(abortLevel));
70}
ELogLevel
Definition of the supported log levels.
Definition: LogConfig.h:26
void setAbortLevel(ELogLevel abortLevel)
Configure the abort level.
Definition: LogConfig.h:112

◆ setDebugLevel()

void setDebugLevel ( int  debugLevel)
inherited

Configure the debug messaging level.

Definition at line 61 of file Module.cc.

62{
63 m_logConfig.setDebugLevel(debugLevel);
64}
void setDebugLevel(int debugLevel)
Configure the debug messaging level.
Definition: LogConfig.h:98

◆ setDescription()

void setDescription ( const std::string &  description)
protectedinherited

Sets the description of the module.

Parameters
descriptionA description of the module.

Definition at line 214 of file Module.cc.

215{
216 m_description = description;
217}

◆ setLogConfig()

void setLogConfig ( const LogConfig logConfig)
inlineinherited

Set the log system configuration.

Definition at line 230 of file Module.h.

230{m_logConfig = logConfig;}

◆ setLogInfo()

void setLogInfo ( int  logLevel,
unsigned int  logInfo 
)
inherited

Configure the printed log information for the given level.

Parameters
logLevelThe log level (one of LogConfig::ELogLevel)
logInfoWhat kind of info should be printed? ORed combination of LogConfig::ELogInfo flags.

Definition at line 73 of file Module.cc.

74{
75 m_logConfig.setLogInfo(static_cast<LogConfig::ELogLevel>(logLevel), logInfo);
76}
void setLogInfo(ELogLevel logLevel, unsigned int logInfo)
Configure the printed log information for the given level.
Definition: LogConfig.h:127

◆ setLogLevel()

void setLogLevel ( int  logLevel)
inherited

Configure the log level.

Definition at line 55 of file Module.cc.

56{
57 m_logConfig.setLogLevel(static_cast<LogConfig::ELogLevel>(logLevel));
58}
void setLogLevel(ELogLevel logLevel)
Configure the log level.
Definition: LogConfig.cc:25

◆ setName()

void setName ( const std::string &  name)
inlineinherited

Set the name of the module.

Note
The module name is set when using the REG_MODULE macro, but the module can be renamed before calling process() using the set_name() function in your steering file.
Parameters
nameThe name of the module

Definition at line 214 of file Module.h.

214{ m_name = name; };

◆ setParamList()

void setParamList ( const ModuleParamList params)
inlineprotectedinherited

Replace existing parameter list.

Definition at line 501 of file Module.h.

501{ m_moduleParamList = params; }

◆ setParamPython()

void setParamPython ( const std::string &  name,
const boost::python::object &  pyObj 
)
privateinherited

Implements a method for setting boost::python objects.

The method supports the following types: list, dict, int, double, string, bool The conversion of the python object to the C++ type and the final storage of the parameter value is done in the ModuleParam class.

Parameters
nameThe unique name of the parameter.
pyObjThe object which should be converted and stored as the parameter value.

Definition at line 234 of file Module.cc.

235{
236 LogSystem& logSystem = LogSystem::Instance();
237 logSystem.updateModule(&(getLogConfig()), getName());
238 try {
240 } catch (std::runtime_error& e) {
241 throw std::runtime_error("Cannot set parameter '" + name + "' for module '"
242 + m_name + "': " + e.what());
243 }
244
245 logSystem.updateModule(nullptr);
246}
Class for logging debug, info and error messages.
Definition: LogSystem.h:46
void updateModule(const LogConfig *moduleLogConfig=nullptr, const std::string &moduleName="")
Sets the log configuration to the given module log configuration and sets the module name This method...
Definition: LogSystem.h:191
static LogSystem & Instance()
Static method to get a reference to the LogSystem instance.
Definition: LogSystem.cc:31
void setParamPython(const std::string &name, const PythonObject &pyObj)
Implements a method for setting boost::python objects.

◆ setParamPythonDict()

void setParamPythonDict ( const boost::python::dict &  dictionary)
privateinherited

Implements a method for reading the parameter values from a boost::python dictionary.

The key of the dictionary has to be the name of the parameter and the value has to be of one of the supported parameter types.

Parameters
dictionaryThe python dictionary from which the parameter values are read.

Definition at line 249 of file Module.cc.

250{
251
252 LogSystem& logSystem = LogSystem::Instance();
253 logSystem.updateModule(&(getLogConfig()), getName());
254
255 boost::python::list dictKeys = dictionary.keys();
256 int nKey = boost::python::len(dictKeys);
257
258 //Loop over all keys in the dictionary
259 for (int iKey = 0; iKey < nKey; ++iKey) {
260 boost::python::object currKey = dictKeys[iKey];
261 boost::python::extract<std::string> keyProxy(currKey);
262
263 if (keyProxy.check()) {
264 const boost::python::object& currValue = dictionary[currKey];
265 setParamPython(keyProxy, currValue);
266 } else {
267 B2ERROR("Setting the module parameters from a python dictionary: invalid key in dictionary!");
268 }
269 }
270
271 logSystem.updateModule(nullptr);
272}
void setParamPython(const std::string &name, const boost::python::object &pyObj)
Implements a method for setting boost::python objects.
Definition: Module.cc:234

◆ setPropertyFlags()

void setPropertyFlags ( unsigned int  propertyFlags)
inherited

Sets the flags for the module properties.

Parameters
propertyFlagsbitwise OR of EModulePropFlags

Definition at line 208 of file Module.cc.

209{
210 m_propertyFlags = propertyFlags;
211}

◆ setReturnValue() [1/2]

void setReturnValue ( bool  value)
protectedinherited

Sets the return value for this module as bool.

The bool value is saved as an integer with the convention 1 meaning true and 0 meaning false. The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 227 of file Module.cc.

228{
229 m_hasReturnValue = true;
230 m_returnValue = value;
231}

◆ setReturnValue() [2/2]

void setReturnValue ( int  value)
protectedinherited

Sets the return value for this module as integer.

The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 220 of file Module.cc.

221{
222 m_hasReturnValue = true;
223 m_returnValue = value;
224}

◆ setType()

void setType ( const std::string &  type)
protectedinherited

Set the module type.

Only for use by internal modules (which don't use the normal REG_MODULE mechanism).

Definition at line 48 of file Module.cc.

49{
50 if (!m_type.empty())
51 B2FATAL("Trying to change module type from " << m_type << " is not allowed, the value is assumed to be fixed.");
52 m_type = type;
53}

◆ terminate()

virtual void terminate ( void  )
inlineoverridevirtual

terminate

Reimplemented from HistoModule.

Definition at line 58 of file TRGGDLDQMModule.h.

58{}

Member Data Documentation

◆ _e_cdcrvc

int _e_cdcrvc = 0
protected

Definition at line 180 of file TRGGDLDQMModule.h.

◆ _e_cdctiming

int _e_cdctiming = 0
protected

Definition at line 177 of file TRGGDLDQMModule.h.

◆ _e_coml1rvc

int _e_coml1rvc = 0
protected

Definition at line 174 of file TRGGDLDQMModule.h.

◆ _e_eclrvc

int _e_eclrvc = 0
protected

Definition at line 179 of file TRGGDLDQMModule.h.

◆ _e_ecltiming

int _e_ecltiming = 0
protected

Definition at line 176 of file TRGGDLDQMModule.h.

◆ _e_gdll1rvc

int _e_gdll1rvc = 0
protected

Definition at line 173 of file TRGGDLDQMModule.h.

◆ _e_timtype

int _e_timtype = 0
protected

Definition at line 172 of file TRGGDLDQMModule.h.

◆ _e_toprvc

int _e_toprvc = 0
protected

Definition at line 178 of file TRGGDLDQMModule.h.

◆ _e_toptiming

int _e_toptiming = 0
protected

Definition at line 175 of file TRGGDLDQMModule.h.

◆ _exp

unsigned _exp = 0
protected

Definition at line 155 of file TRGGDLDQMModule.h.

◆ _run

unsigned _run = 0
protected

Definition at line 156 of file TRGGDLDQMModule.h.

◆ array_psn_extra_fast

int array_psn_extra_fast[nskim_gdldqm][nsample_fast][n_output_extra] = {{{0}}}
protected

Definition at line 166 of file TRGGDLDQMModule.h.

◆ bevt

StoreObjPtr<EventMetaData> bevt
private

Definition at line 240 of file TRGGDLDQMModule.h.

◆ dirDQM

TDirectory* dirDQM = nullptr
protected

Definition at line 132 of file TRGGDLDQMModule.h.

◆ ee_ftd

int ee_ftd[10] = {0}
protected

Definition at line 182 of file TRGGDLDQMModule.h.

◆ ee_itd

int ee_itd[10] = {0}
protected

Definition at line 183 of file TRGGDLDQMModule.h.

◆ ee_psn

int ee_psn[10] = {0}
protected

Definition at line 181 of file TRGGDLDQMModule.h.

◆ end_skim_gdldqm

int end_skim_gdldqm = 0
protected

Definition at line 66 of file TRGGDLDQMModule.h.

◆ entAry

Definition at line 237 of file TRGGDLDQMModule.h.

◆ evtno

unsigned evtno = 0
protected

Definition at line 154 of file TRGGDLDQMModule.h.

◆ h_0_vec

std::vector<int> h_0_vec
protected

Definition at line 123 of file TRGGDLDQMModule.h.

◆ h_c2_cdcTocomL1

TH1I* h_c2_cdcTocomL1[nskim_gdldqm] = {nullptr}
protected

timestamp diff from cdc_timing to comL1 in LSB2nsec

Definition at line 86 of file TRGGDLDQMModule.h.

◆ h_c2_cdcToecl

TH1I* h_c2_cdcToecl[nskim_gdldqm] = {nullptr}
protected

timestamp from cdc_timing to ecl_timing to L1 in LSB2nsec

Definition at line 96 of file TRGGDLDQMModule.h.

◆ h_c8_cdcToGDL

TH1I* h_c8_cdcToGDL[nskim_gdldqm] = {nullptr}
protected

timestamp diff from t0(cdc) to GDL in LSB8nsec

Definition at line 84 of file TRGGDLDQMModule.h.

◆ h_c8_cdcTogdlL1

TH1I* h_c8_cdcTogdlL1[nskim_gdldqm] = {nullptr}
protected

timestamp diff from t0(cdc) to gdlL1 in LSB8nsec

Definition at line 76 of file TRGGDLDQMModule.h.

◆ h_c8_ecl8mToGDL

TH1I* h_c8_ecl8mToGDL[nskim_gdldqm] = {nullptr}
protected

timestamp diff from fit on fam to GDL in LSB8nsec

Definition at line 78 of file TRGGDLDQMModule.h.

◆ h_c8_eclToGDL

TH1I* h_c8_eclToGDL[nskim_gdldqm] = {nullptr}
protected

timestamp diff from t0(ecl) to GDL in LSB8nsec

Definition at line 82 of file TRGGDLDQMModule.h.

◆ h_c8_eclTogdlL1

TH1I* h_c8_eclTogdlL1[nskim_gdldqm] = {nullptr}
protected

timestamp diff from t0(ecl) to gdlL1 in LSB8nsec

Definition at line 74 of file TRGGDLDQMModule.h.

◆ h_c8_gdlL1TocomL1

TH1I* h_c8_gdlL1TocomL1[nskim_gdldqm] = {nullptr}
protected

timestamp diff from gdlL1 to comL1 in LSB8nsec

Definition at line 70 of file TRGGDLDQMModule.h.

◆ h_c8_topToGDL

TH1I* h_c8_topToGDL[nskim_gdldqm] = {nullptr}
protected

timestamp diff from t0(top) to GDL in LSB8nsec

Definition at line 80 of file TRGGDLDQMModule.h.

◆ h_c8_topTogdlL1

TH1I* h_c8_topTogdlL1[nskim_gdldqm] = {nullptr}
protected

timestamp diff from t0(top) to gdlL1 in LSB8nsec

Definition at line 72 of file TRGGDLDQMModule.h.

◆ h_f_vec

std::vector<int> h_f_vec
protected

Definition at line 127 of file TRGGDLDQMModule.h.

◆ h_ftd

TH1I* h_ftd[nskim_gdldqm] = {nullptr}
protected

ftd bits

Definition at line 109 of file TRGGDLDQMModule.h.

◆ h_ftd_fall

TH1I* h_ftd_fall[N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
protected

Definition at line 111 of file TRGGDLDQMModule.h.

◆ h_ftd_rise

TH1I* h_ftd_rise[N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
protected

Definition at line 110 of file TRGGDLDQMModule.h.

◆ h_i_vec

std::vector<int> h_i_vec
protected

Definition at line 129 of file TRGGDLDQMModule.h.

◆ h_itd

TH1I* h_itd[nskim_gdldqm] = {nullptr}
protected

input bits

itd bits

Definition at line 105 of file TRGGDLDQMModule.h.

◆ h_itd_fall

TH1I* h_itd_fall[N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
protected

Definition at line 107 of file TRGGDLDQMModule.h.

◆ h_itd_rise

TH1I* h_itd_rise[N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
protected

Definition at line 106 of file TRGGDLDQMModule.h.

◆ h_ns_cdcTocomL1

TH1D* h_ns_cdcTocomL1[nskim_gdldqm] = {nullptr}
protected

timestamp diff from cdc_timing to comL1 in nsec

Definition at line 88 of file TRGGDLDQMModule.h.

◆ h_ns_cdcToecl

TH1D* h_ns_cdcToecl[nskim_gdldqm] = {nullptr}
protected

timestamp diff from cdc_timing to ecl_timing in nsec

Definition at line 98 of file TRGGDLDQMModule.h.

◆ h_ns_cdcTogdlL1

TH1D* h_ns_cdcTogdlL1[nskim_gdldqm] = {nullptr}
protected

timestamp diff from cdc_timing to gdlL1 in nsec

Definition at line 90 of file TRGGDLDQMModule.h.

◆ h_ns_topTocdc

TH1D* h_ns_topTocdc[nskim_gdldqm] = {nullptr}
protected

timestamp diff from top_timing to cdc_timing in nsec

Definition at line 94 of file TRGGDLDQMModule.h.

◆ h_ns_topToecl

TH1D* h_ns_topToecl[nskim_gdldqm] = {nullptr}
protected

timestamp diff from top_timing to ecl_timing in nsec

Definition at line 92 of file TRGGDLDQMModule.h.

◆ h_p_vec

std::vector<int> h_p_vec
protected

Definition at line 125 of file TRGGDLDQMModule.h.

◆ h_psn

TH1I* h_psn[nskim_gdldqm] = {nullptr}
protected

psn bits

Definition at line 113 of file TRGGDLDQMModule.h.

◆ h_psn_effect_to_l1

TH1I* h_psn_effect_to_l1[nskim_gdldqm] = {nullptr}
protected

Definition at line 118 of file TRGGDLDQMModule.h.

◆ h_psn_extra

TH1I* h_psn_extra[nskim_gdldqm] = {nullptr}
protected

Definition at line 116 of file TRGGDLDQMModule.h.

◆ h_psn_extra_fast

TH1I* h_psn_extra_fast[nskim_gdldqm] = {nullptr}
protected

Definition at line 117 of file TRGGDLDQMModule.h.

◆ h_psn_fall

TH1I* h_psn_fall[N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
protected

Definition at line 115 of file TRGGDLDQMModule.h.

◆ h_psn_pure_extra

TH1I* h_psn_pure_extra[nskim_gdldqm] = {nullptr}
protected

Definition at line 120 of file TRGGDLDQMModule.h.

◆ h_psn_raw_rate

TH1I* h_psn_raw_rate[nskim_gdldqm] = {nullptr}
protected

Definition at line 119 of file TRGGDLDQMModule.h.

◆ h_psn_rise

TH1I* h_psn_rise[N_BITS_RESERVED][nskim_gdldqm] = {{nullptr}}
protected

Definition at line 114 of file TRGGDLDQMModule.h.

◆ h_timtype

TH1I* h_timtype[nskim_gdldqm] = {nullptr}
protected

timtype

Definition at line 122 of file TRGGDLDQMModule.h.

◆ inbitname

char inbitname[320][100] = {""}
protected

Definition at line 193 of file TRGGDLDQMModule.h.

◆ LeafBitMap

int LeafBitMap[320] = {0}
protected

Definition at line 170 of file TRGGDLDQMModule.h.

◆ LeafNames

char LeafNames[320][100] = {{0}}
protected

Definition at line 171 of file TRGGDLDQMModule.h.

◆ m_bitConditionToDumpVcd

std::string m_bitConditionToDumpVcd
protected

Definition at line 140 of file TRGGDLDQMModule.h.

◆ m_bitNameOnBinLabel

bool m_bitNameOnBinLabel
protected

Definition at line 136 of file TRGGDLDQMModule.h.

◆ m_conditions

std::vector<ModuleCondition> m_conditions
privateinherited

Module condition, only non-null if set.

Definition at line 521 of file Module.h.

◆ m_dbftdl

DBObjPtr<TRGGDLDBFTDLBits> m_dbftdl
protected

Definition at line 196 of file TRGGDLDQMModule.h.

◆ m_dbinput

DBObjPtr<TRGGDLDBInputBits> m_dbinput
protected

Definition at line 191 of file TRGGDLDQMModule.h.

◆ m_description

std::string m_description
privateinherited

The description of the module.

Definition at line 511 of file Module.h.

◆ m_dumpVcdFile

bool m_dumpVcdFile
protected

Definition at line 135 of file TRGGDLDQMModule.h.

◆ m_ECLCalDigitData

StoreArray<ECLCalDigit> m_ECLCalDigitData
private

Definition at line 250 of file TRGGDLDQMModule.h.

◆ m_ECLDigitData

StoreArray<ECLDigit> m_ECLDigitData
private

Definition at line 251 of file TRGGDLDQMModule.h.

◆ m_eventByEventTimingHistRecord

bool m_eventByEventTimingHistRecord
protected

Definition at line 134 of file TRGGDLDQMModule.h.

◆ m_generatePostscript

bool m_generatePostscript
protected

Definition at line 137 of file TRGGDLDQMModule.h.

◆ m_hasReturnValue

bool m_hasReturnValue
privateinherited

True, if the return value is set.

Definition at line 518 of file Module.h.

◆ m_logConfig

LogConfig m_logConfig
privateinherited

The log system configuration of the module.

Definition at line 514 of file Module.h.

◆ m_moduleParamList

ModuleParamList m_moduleParamList
privateinherited

List storing and managing all parameter of the module.

Definition at line 516 of file Module.h.

◆ m_name

std::string m_name
privateinherited

The name of the module, saved as a string (user-modifiable)

Definition at line 508 of file Module.h.

◆ m_package

std::string m_package
privateinherited

Package this module is found in (may be empty).

Definition at line 510 of file Module.h.

◆ m_postScriptName

std::string m_postScriptName
protected

Definition at line 141 of file TRGGDLDQMModule.h.

◆ m_propertyFlags

unsigned int m_propertyFlags
privateinherited

The properties of the module as bitwise or (with |) of EModulePropFlags.

Definition at line 512 of file Module.h.

◆ m_returnValue

int m_returnValue
privateinherited

The return value.

Definition at line 519 of file Module.h.

◆ m_skim

int m_skim = -1
protected

Definition at line 67 of file TRGGDLDQMModule.h.

◆ m_type

std::string m_type
privateinherited

The type of the module, saved as a string.

Definition at line 509 of file Module.h.

◆ m_unpacker

DBObjPtr<TRGGDLDBUnpacker> m_unpacker
protected

Definition at line 169 of file TRGGDLDQMModule.h.

◆ m_vcdEventStart

unsigned m_vcdEventStart = 0
protected

Definition at line 138 of file TRGGDLDQMModule.h.

◆ m_vcdNumberOfEvents

unsigned m_vcdNumberOfEvents = 0
protected

Definition at line 139 of file TRGGDLDQMModule.h.

◆ n_clocks

unsigned n_clocks = 0
protected

Definition at line 153 of file TRGGDLDQMModule.h.

◆ n_inbit

unsigned n_inbit = 0
protected

Definition at line 192 of file TRGGDLDQMModule.h.

◆ n_leafs

int n_leafs = 0
protected

Definition at line 184 of file TRGGDLDQMModule.h.

◆ n_leafsExtra

int n_leafsExtra = 0
protected

Definition at line 185 of file TRGGDLDQMModule.h.

◆ n_outbit

unsigned n_outbit = 0
protected

Definition at line 197 of file TRGGDLDQMModule.h.

◆ n_output_extra

const int n_output_extra = 105
staticprotected

Definition at line 159 of file TRGGDLDQMModule.h.

◆ n_output_overlap

const int n_output_overlap = 130
staticprotected

Definition at line 161 of file TRGGDLDQMModule.h.

◆ n_output_pure_extra

const int n_output_pure_extra = 13
staticprotected

Definition at line 163 of file TRGGDLDQMModule.h.

◆ nconf

int nconf = 0
protected

Definition at line 186 of file TRGGDLDQMModule.h.

◆ nsample_fast

const int nsample_fast = 500
staticprotected

Definition at line 165 of file TRGGDLDQMModule.h.

◆ nskim_gdldqm

const int nskim_gdldqm = 11
staticprotected

Definition at line 64 of file TRGGDLDQMModule.h.

◆ nword_input

int nword_input = 0
protected

Definition at line 187 of file TRGGDLDQMModule.h.

◆ nword_output

int nword_output = 0
protected

Definition at line 188 of file TRGGDLDQMModule.h.

◆ oldDir

TDirectory* oldDir = nullptr
protected

Definition at line 131 of file TRGGDLDQMModule.h.

◆ outbitname

char outbitname[320][100] = {""}
protected

Definition at line 198 of file TRGGDLDQMModule.h.

◆ output_extra

const char * output_extra
staticprotected
Initial value:
= {
"all", "fff&(c4|hie)", "ffo&(c4|hie)", "ffb&(c4|hie)", "fff", "c4|hie", "fff|ffo|ffb", "(fff|ffo|ffb)&(c4|hie)", "bha2D", "bha3D",
"ff", "ff&(lml|eclmumu)", "f", "f&(lml|eclmumu)", "lml|eclmumu", "fff&(lml|eclmumu)", "ffo&(lml|eclmumu)", "ffb&(lml|eclmumu)", "ffy", "ffy&(c4|hie)",
"fyo&(c4|hie)", "fyb&(c4|hie)", "(ffy|ffo|ffb)&(c4|hie)", "ffy&(lml|eclmumu)", "fyo&(lml|eclmumu)", "fyb&(lml|eclmumu)", "c4&(fff|ffo|ffb)", "hie&(fff|ffo|ffb)", "lml0&(fff|ffo|ffb)", "lml1&(fff|ffo|ffb)",
"lml2&(fff|ffo|ffb)", "lml3&(fff|ffo|ffb)", "lml4&(fff|ffo|ffb)", "lml5&(fff|ffo|ffb)", "lml6&(fff|ffo|ffb)", "lml7&(fff|ffo|ffb)", "lml8&(fff|ffo|ffb)", "lml9&(fff|ffo|ffb)", "lml10&(fff|ffo|ffb)", "lml12&(fff|ffo|ffb)",
"lml13&(fff|ffo|ffb)", "eclmumu&(fff|ffo|ffb)", "mu_b2b&(fff|ffo|ffb)", "mu_eb2b&(fff|ffo|ffb)", "cdcklm1&(fff|ffo|ffb)", "cdcklm2&(fff|ffo|ffb)", "klm_hit&(fff|ffo|ffb)", "eklm_hit&(fff|ffo|ffb)", "mu_b2b&(lml|eclmumu)", "mu_eb2b&(lml|eclmumu)",
"cdcklm1&(lml|eclmumu)", "cdcklm2&(lml|eclmumu)", "klm_hit&(lml|eclmumu)", "eklm_hit&(lml|eclmumu)", "cdcecl1&(fff|ffo|ffb)", "cdcecl2&(fff|ffo|ffb)", "cdcecl3&(fff|ffo|ffb)", "cdcecl4&(fff|ffo|ffb)", "cdcecl1&(lml|eclmumu)", "cdcecl2&(lml|eclmumu)",
"cdcecl3&(lml|eclmumu)", "cdcecl4&(lml|eclmumu)", "fso&(lml|eclmumu)", "fsb&(lml|eclmumu)", "syo&(lml|eclmumu)", "syb&(lml|eclmumu)", "x&(lml|eclmumu)", "fioiecl1&(lml|eclmumu)", "ecleklm1&(lml|eclmumu)", "seklm1&(lml|eclmumu)",
"seklm2&(lml|eclmumu)", "ieklm&(lml|eclmumu)", "iecl&(lml|eclmumu)", "ecleklm1&(fff|ffo|ffb)", "syo&(c4|hie)", "yioiecl1&(c4|hie)", "stt&(c4|hie)", "ffz&(c4|hie)", "fzo&(c4|hie)", "fzb&(c4|hie)",
"ffy&ffz&(c4|hie)", "fyo&fzo&(c4|hie)", "fyb&fzb&(c4|hie)", "(ffy|ffz)&(c4|hie)", "(fyo|fzo)&(c4|hie)", "(fyb|fzb)&(c4|hie)", "ffy&ffz", "fyo&fzo", "fyb&fzb", "(ffy|ffz)",
"(fyo|fzo)", "(fyb|fzb)", "ffo", "ffb", "aaa&(c4|hie)", "aay&(c4|hie)", "ycdcklm1&(fff|ffo|ffb)", "ycdcklm2&(fff|ffo|ffb)", "ycdcklm1&(lml|eclmumu)", "ycdcklm2&(lml|eclmumu)",
"sttecl&(c4|hie)", "syoecl&(lml|eclmumu)", "sybecl&(lml|eclmumu)", "syoecl&(c4|hie)", "sybecl&(c4|hie)"
}

Definition at line 160 of file TRGGDLDQMModule.h.

◆ output_overlap

const char * output_overlap
staticprotected

Definition at line 162 of file TRGGDLDQMModule.h.

◆ output_pure_extra

const char * output_pure_extra
staticprotected
Initial value:
= {
"c4|hie offline_fff", "fff&(c4|hie) offline_fff", "ffy&(c4|hie) offline_fff",
"c4|hie offline_ffo", "ffo&(c4|hie) offline_ffo", "fyo&(c4|hie) offline_ffo",
"c4|hie offline_ffb", "ffb&(c4|hie) offline_ffb", "fyb&(c4|hie) offline_ffb",
"fff|ffb|ffo offline_hie", "hie&(fff|ffb|ffo) offline_hie",
"fff|ffb|ffo offline_c4", "c4&(fff|ffb|ffo) offline_c4"
}

Definition at line 164 of file TRGGDLDQMModule.h.

◆ result_soft

StoreObjPtr<SoftwareTriggerResult> result_soft
private

Definition at line 243 of file TRGGDLDQMModule.h.

◆ skim

std::vector<int> skim
protected

Definition at line 157 of file TRGGDLDQMModule.h.

◆ skim_menu

std::string skim_menu[nskim_gdldqm]
protected
Initial value:
= {
"all",
"software_trigger_cut&skim&accept_hadron",
"software_trigger_cut&skim&accept_tau_tau",
"software_trigger_cut&skim&accept_mumu_1trk",
"software_trigger_cut&skim&accept_mumu_2trk",
"software_trigger_cut&skim&accept_gamma_gamma",
"software_trigger_cut&skim&accept_bhabha",
"software_trigger_cut&skim&accept_hadronb",
"software_trigger_cut&skim&accept_hadronb1",
"software_trigger_cut&skim&accept_hadronb2",
"software_trigger_cut&skim&accept_mumutight"
}

Definition at line 202 of file TRGGDLDQMModule.h.

◆ skim_smap

std::string skim_smap[nskim_gdldqm]
protected
Initial value:
= {
"all",
"hadron",
"tautau",
"mumu1trk",
"mumu2trk",
"gammagamma",
"bhabha",
"hadronb",
"hadronb1",
"hadronb2",
"mumutight"
}

Definition at line 217 of file TRGGDLDQMModule.h.

◆ start_skim_gdldqm

int start_skim_gdldqm = 0
protected

Definition at line 65 of file TRGGDLDQMModule.h.

◆ Tracks

StoreArray<Track> Tracks
private

Definition at line 246 of file TRGGDLDQMModule.h.

◆ trgeclmap

TrgEclMapping* trgeclmap = nullptr
private

Definition at line 234 of file TRGGDLDQMModule.h.


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