Belle II Software  release-05-01-25
BeamBkgTagSetterModule.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Marko Staric, Yuri Soloviev, Igal Jaegle *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 // Own include
12 #include <background/modules/BeamBkgTagSetter/BeamBkgTagSetterModule.h>
13 
14 
15 // framework - DataStore
16 #include <framework/datastore/DataStore.h>
17 #include <framework/datastore/StoreArray.h>
18 #include <framework/datastore/StoreObjPtr.h>
19 
20 // framework aux
21 #include <framework/logging/Logger.h>
22 
23 // MetaData
24 #include <framework/dataobjects/EventMetaData.h>
25 
26 using namespace std;
27 
28 namespace Belle2 {
34  //-----------------------------------------------------------------
35  // Register module
36  //-----------------------------------------------------------------
37 
38  REG_MODULE(BeamBkgTagSetter)
39 
40  //-----------------------------------------------------------------
41  // Implementation
42  //-----------------------------------------------------------------
43 
45  m_backgroundTag(BackgroundMetaData::bg_none), m_fileType(BackgroundMetaData::c_Usual)
46 
47  {
48  // set module description (e.g. insert text)
49  setDescription("Sets beam background tag variable in SimHits and "
50  "adds BackgroundMetaData branch in persistent tree; "
51  "returns true if at least one of the SimHit store arrays "
52  "has entries. Return value can be used to discard empty "
53  "events at output.");
54 
55  // parallel processing certificate
56  setPropertyFlags(c_ParallelProcessingCertified);
57 
58  // Add parameters
59  addParam("backgroundType", m_backgroundType,
60  "one of: " + m_bgTypes.getBGTypes());
61  addParam("realTime", m_realTime,
62  "equivalent time of superKEKB running in [ns] to obtain this sample");
63  addParam("specialFor", m_specialFor,
64  "tag ordinary file (default) or additional file ('ECL' or 'PXD')",
65  string(""));
66  addParam("Phase", m_phase,
67  "specify the Phase: 1 for Phase 1, 2 for Phase 2, 3 for Physics Run or Phase 3", 3);
68 
69  }
70 
71  BeamBkgTagSetterModule::~BeamBkgTagSetterModule()
72  {
73  }
74 
75  void BeamBkgTagSetterModule::initialize()
76  {
77  if (m_realTime <= 0) B2FATAL("invalid realTime: " << m_realTime);
78 
79  m_backgroundTag = m_bgTypes.getTag(m_backgroundType);
80  if (m_backgroundTag == 0) {
81  B2ERROR("Unknown beam background type: " << m_backgroundType << "\n"
82  "Possible are: " + m_bgTypes.getBGTypes());
83  m_backgroundTag = BackgroundMetaData::bg_other;
84  }
85 
86  if (m_specialFor != "") {
87  if (m_specialFor == "ECL") {m_fileType = BackgroundMetaData::c_ECL;}
88  else if (m_specialFor == "PXD") {m_fileType = BackgroundMetaData::c_PXD;}
89  else {B2ERROR("specialFor " << m_specialFor << "not supported");}
90  }
91 
92  // set BackgroundMetaData
93  StoreObjPtr<BackgroundMetaData> bkgMetaData("", DataStore::c_Persistent);
94  bkgMetaData.registerInDataStore();
95  if (!bkgMetaData.isValid())
96  bkgMetaData.create();
97  bkgMetaData->setBackgroundType(m_backgroundType);
98  bkgMetaData->setBackgroundTag(m_backgroundTag);
99  bkgMetaData->setRealTime(m_realTime);
100  bkgMetaData->setFileType(m_fileType);
101 
102  // registration of detector simHits
103  m_pxdSimHits.isOptional();
104  m_svdSimHits.isOptional();
105  m_cdcSimHits.isOptional();
106  m_topSimHits.isOptional();
107  m_arichSimHits.isOptional();
108  m_eclSimHits.isOptional();
109  m_eclHits.isOptional();
110  m_bklmSimHits.isOptional();
111  m_eklmSimHits.isOptional();
112 
113  // registration of beast simHits
114  m_diaSimHits.isOptional();
115  m_clw2SimHits.isOptional();
116  m_clw1SimHits.isOptional();
117  m_fngSimHits.isOptional();
118  m_plmSimHits.isOptional();
119  m_pinSimHits.isOptional();
120  m_he3SimHits.isOptional();
121  m_tpcSimHits.isOptional();
122  m_sciSimHits.isOptional();
123  m_bgoSimHits.isOptional();
124  m_csiSimHits.isOptional();
125  }
126 
127  void BeamBkgTagSetterModule::beginRun()
128  {
129  }
130 
131  void BeamBkgTagSetterModule::event()
132  {
133  int n = 0;
134  if (m_phase == 2 || m_phase == 3) {
135  n += setBackgroundTag(m_pxdSimHits);
136  n += setBackgroundTag(m_svdSimHits);
137  n += setBackgroundTag(m_cdcSimHits);
138  n += setBackgroundTag(m_topSimHits);
139  n += setBackgroundTag(m_arichSimHits);
140  n += setBackgroundTag(m_eclSimHits);
141  n += setBackgroundTag(m_eclHits);
142  n += setBackgroundTag(m_bklmSimHits);
143  n += setBackgroundTag(m_eklmSimHits);
144  }
145  // BEAST addition
146  if (m_phase == 1 || m_phase == 2) {
147  n += setBackgroundTag(m_diaSimHits);
148  if (m_phase == 1) {
149  n += setBackgroundTag(m_clw1SimHits);
150  n += setBackgroundTag(m_csiSimHits);
151  n += setBackgroundTag(m_bgoSimHits);
152  }
153  if (m_phase == 2) {
154  n += setBackgroundTag(m_clw2SimHits);
155  n += setBackgroundTag(m_fngSimHits);
156  n += setBackgroundTag(m_plmSimHits);
157  }
158  n += setBackgroundTag(m_pinSimHits);
159  n += setBackgroundTag(m_he3SimHits);
160  n += setBackgroundTag(m_tpcSimHits);
161  n += setBackgroundTag(m_sciSimHits);
162  }
163 
164  if (m_fileType == BackgroundMetaData::c_ECL) n = m_eclHits.getEntries();
165  if (m_fileType == BackgroundMetaData::c_PXD) n = m_pxdSimHits.getEntries();
166 
167  setReturnValue(n > 0);
168 
169  StoreObjPtr<EventMetaData> evtMetaData;
170  B2INFO("Exp " << evtMetaData->getExperiment() <<
171  " Run " << evtMetaData->getRun() <<
172  " Event " << evtMetaData->getEvent() <<
173  " number of SimHits = " << n);
174 
175  }
176 
177 
178  void BeamBkgTagSetterModule::endRun()
179  {
180  }
181 
182  void BeamBkgTagSetterModule::terminate()
183  {
184  }
185 
186 
188 } // end Belle2 namespace
189 
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::BeamBkgTagSetterModule
A module that sets m_backgroundTag variable in SimHits (see BackgroundMetaData.h).
Definition: BeamBkgTagSetterModule.h:66
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::BackgroundMetaData
Metadata information about the beam background file.
Definition: BackgroundMetaData.h:34
Belle2::StoreObjPtr::isValid
bool isValid() const
Check whether the object was created.
Definition: StoreObjPtr.h:120