hpstr
The Heavy Photon Search Toolkit for Reconstruction (hpstr) provides an interface to physics data from the HPS experiment saved in the LCIO format and converts it into an ROOT based format.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
EventProcessor.cxx
Go to the documentation of this file.
1
8#include "EventProcessor.h"
9
10
11EventProcessor::EventProcessor(const std::string& name, Process& process)
12 : Processor(name, process) {
13 }
14
17
18void EventProcessor::configure(const ParameterSet& parameters) {
19
20 std::cout << "Configuring EventProcessor" << std::endl;
21 try
22 {
23 debug_ = parameters.getInteger("debug", debug_);
24 headCollRoot_ = parameters.getString("headCollRoot", headCollRoot_);
25 trigCollLcio_ = parameters.getString("trigCollLcio", trigCollLcio_);
26 rfCollLcio_ = parameters.getString("rfCollLcio", rfCollLcio_ );
27 vtpCollLcio_ = parameters.getString("vtpCollLcio", vtpCollLcio_);
28 vtpCollRoot_ = parameters.getString("vtpCollRoot", vtpCollRoot_ );
29 tsCollLcio_ = parameters.getString("tsCollLcio", tsCollLcio_);
30 tsCollRoot_ = parameters.getString("tsCollRoot", tsCollRoot_);
31 year_ = parameters.getInteger("year", year_);
32
33 //For single events debugging pass a txt list of <runN> <evtN> to only select specific events
34 run_evt_list_ = parameters.getString("debugSingleEvents",run_evt_list_);
35 }
36 catch (std::runtime_error& error)
37 {
38 std::cout << error.what() << std::endl;
39 }
40}
41
42void EventProcessor::initialize(TTree* tree) {
43 header_ = new EventHeader();
44 if (vtpCollLcio_ != "") vtpData = new VTPData();
45 tsData = new TSData();
46 tree->Branch(headCollRoot_.c_str(), &header_);
47 if (vtpCollLcio_ != "") tree->Branch(vtpCollRoot_.c_str(), &vtpData);
48 tree->Branch(tsCollRoot_.c_str(), &tsData);
49
50 //Cache everything in a map
51 if (!run_evt_list_.empty()) {
52 std::cout<<"EventProcessor::Setting up the run/evt map from "<< run_evt_list_<<std::endl;
53 int runN=-999, evtN=-999;
54 std::ifstream runEvt_ifile(run_evt_list_);
55 if (runEvt_ifile.is_open()) {
56 while(!runEvt_ifile.eof()) {
57 runEvt_ifile >> runN >> evtN;
58 //std::cout<<"Adding " <<runN<<" "<<evtN<<std::endl;
59 run_evts_map_[runN].push_back(evtN);
60 }// fill the map
61 runEvt_ifile.close();
62 } // file is open
63 }//empty list of run/evts
64}
65
67
68 Event* event = static_cast<Event*> (ievent);
69 *header_ = event->getEventHeaderMutable();
70
71 EVENT::LCEvent* lc_event = event->getLCEvent();
72 int runNumber = lc_event->getRunNumber();
73 int evtNumber = lc_event->getEventNumber();
74 if (debug_) {
75 std::cout<<"Event Number: "<<evtNumber<<std::endl;
76 std::cout<<"Run Number: "<<runNumber<<std::endl;
77 }
78
79 if (!run_evt_list_.empty()) {
80 if (run_evts_map_.find(runNumber)!=run_evts_map_.end()) {
81 auto it = std::find(run_evts_map_[runNumber].begin(), run_evts_map_[runNumber].end(), evtNumber);
82 if ( it != run_evts_map_[runNumber].end())
83 std::cout<<"Save: "<<runNumber<<" "<<evtNumber<<std::endl;
84 else
85 return false;
86 }
87 }
88
89
90 // Set the event number
91 header_->setEventNumber(lc_event->getEventNumber());
92
93 // Set the run number
94 header_->setRunNumber(lc_event->getRunNumber());
95
96 // Set the trigger timestamp
97 header_->setEventTime(lc_event->getTimeStamp());
98
99 // Set the SVT bias state
100 header_->setSvtBiasState(lc_event->getParameters().getIntVal("svt_bias_good"));
101
102 // Set the flag indicating whether the event was affected by SVT burst
103 // mode noise
104 header_->setSvtBurstModeNoise(lc_event->getParameters().getIntVal("svt_burstmode_noise_good"));
105
106 // Set the flag indicating whether the SVT latency was correct during an
107 // event.
108 header_->setSvtLatencyState(lc_event->getParameters().getIntVal("svt_latency_good"));
109
110 // Set the SVT position state
111 header_->setSvtPositionState(lc_event->getParameters().getIntVal("svt_position_good"));
112
113 // Set the SVT event header state
114 header_->setSvtEventHeaderState(lc_event->getParameters().getIntVal("svt_event_header_good"));
115
116 if (year_ >= 2019) {
117 if (vtpCollLcio_ != "") {
118 try {
119 EVENT::LCCollection* vtp_data
120 = static_cast<EVENT::LCCollection*>(event->getLCCollection(vtpCollLcio_.c_str()));
121
122
123 EVENT::LCGenericObject* vtp_datum
124 = static_cast<EVENT::LCGenericObject*>(vtp_data->getElementAt(0));
125
126 parseVTPData(vtp_datum);
127 }
128 catch (EVENT::DataNotAvailableException e) {
129 std::cout << "EventProcessor::process: 2019/2021 VTP trigger collection requested but missing!" << std::endl;
130 return false;
131 }
132 }
133 try {
134 EVENT::LCCollection* ts_data
135 = static_cast<EVENT::LCCollection*>(event->getLCCollection(tsCollLcio_.c_str()));
136
137 EVENT::LCGenericObject* ts_datum
138 = static_cast<EVENT::LCGenericObject*>(ts_data->getElementAt(0));
139
140 parseTSData(ts_datum);
141 }
142 catch (EVENT::DataNotAvailableException e) {
143 std::cout << "EventProcessor::process: 2019/2021 TSBank trigger collection is missing!" << std::endl;
144 return false;
145 }
146 }
147 else if (year_ == 2016 or year_ == 2015) {
148 // Get old version of trigger data
149 EVENT::LCCollection* trigger_data
150 = static_cast<EVENT::LCCollection*>(event->getLCCollection(trigCollLcio_.c_str()));
151
152 for (int itrigger = 0; itrigger < trigger_data->getNumberOfElements(); ++itrigger) {
153
154 EVENT::LCGenericObject* trigger_datum
155 = static_cast<EVENT::LCGenericObject*>(trigger_data->getElementAt(itrigger));
156
157 if (trigger_datum->getIntVal(0) == 0xe10a) {
158
159 TriggerData* tdata = new TriggerData(trigger_datum);
160 header_->setSingle0Trigger(static_cast<int>(tdata->isSingle0Trigger()));
161 header_->setSingle1Trigger(static_cast<int>(tdata->isSingle1Trigger()));
162 header_->setPair0Trigger(static_cast<int>(tdata->isPair0Trigger()));
163 header_->setPair1Trigger(static_cast<int>(tdata->isPair1Trigger()));
164 header_->setPulserTrigger(static_cast<int>(tdata->isPulserTrigger()));
165
166 delete tdata;
167 break;
168 }
169 }
170 }
171
172
173 try {
174 // Get the LCIO GenericObject collection containing the RF times
175 EVENT::LCCollection* rf_hits
176 = static_cast<EVENT::LCCollection*>(event->getLCCollection(rfCollLcio_.c_str()));
177
178 // The collection should only have a single RFHit object per event
179 if (rf_hits->getNumberOfElements() > 1) {
180 throw std::runtime_error("[ EventProcessor ]: The collection "
181 + static_cast<std::string>(rfCollLcio_.c_str())
182 + " doesn't have the expected number of elements.");
183 }
184
185 // Loop over all the RF hits in the event and write them to the DST
186 for (int ihit = 0; ihit < rf_hits->getNumberOfElements(); ++ihit) {
187
188 // Get the RF hit from the event
189 EVENT::LCGenericObject* rf_hit
190 = static_cast<EVENT::LCGenericObject*>(rf_hits->getElementAt(ihit));
191
192 // An RFHit GenericObject should only have two RF times
193 if (rf_hit->getNDouble() != 2) {
194 throw std::runtime_error("[ EventProcessor ]: The collection "
195 + static_cast<std::string>(rfCollLcio_.c_str())
196 + " has the wrong structure.");
197 }
198
199 // Write the RF times to the event
200 for (int ichannel = 0; ichannel < rf_hit->getNDouble(); ++ichannel) {
201 header_->setRfTime(ichannel, rf_hit->getDoubleVal(ichannel));
202 }
203 }
204 } catch(EVENT::DataNotAvailableException e) {
205 // It's fine if the event doesn't have an RF hits collection.
206 }
207
208 //vtpData->print();
209 //event->add(Collections::EVENT_HEADERS, &header);
210
211 return true;
212
213}
214
215void EventProcessor::parseVTPData(EVENT::LCGenericObject* vtp_data_lcio)
216{
217 // First Clear out all the old data.
218 //std::cout << "New VTP Block of size " << vtp_data_lcio->getNInt() << std::endl;
219 vtpData->Clear();
220 for(int i=0; i<vtp_data_lcio->getNInt()/2; ++i)
221 {
222 int data = vtp_data_lcio->getIntVal(i);
223 int secondWord = vtp_data_lcio->getIntVal(i+1);
224 if(!(data & 1<<31)) continue;
225 int type = (data>>27)&0x0F;
226 int subtype;
227 switch (type)
228 {
229 case 0: // Block Header
230 vtpData->blockHeader.blocklevel = (data )&0x00FF;
231 vtpData->blockHeader.blocknum = (data >> 8)&0x03FF;
232 vtpData->blockHeader.nothing = (data >> 18)&0x00FF;
233 vtpData->blockHeader.slotid = (data >> 22)&0x001F;
234 vtpData->blockHeader.type = (data >> 27)&0x000F;
235 vtpData->blockHeader.istype = (data >> 31)&0x0001;
236 //std::cout << i << " BlockHeader " << vtpData->blockHeader.type << std::endl;
237 break;
238 case 1: // Block Tail
239 vtpData->blockTail.nwords = (data )&0x03FFFFF;
240 vtpData->blockTail.slotid = (data >> 22)&0x000001F;
241 vtpData->blockTail.type = (data >> 27)&0x000000F;
242 vtpData->blockTail.istype = (data >> 31)&0x0000001;
243 //std::cout << i << " BlockTail " << vtpData->blockTail.type << std::endl;
244 break;
245 case 2: // Event Header
246 vtpData->eventHeader.eventnum = (data )&0x07FFFFFF;
247 vtpData->eventHeader.type = (data >> 27)&0x0000000F;
248 vtpData->eventHeader.istype = (data >> 31)&0x00000001;
249 //std::cout << i << " EventHeader " << vtpData->eventHeader.eventnum << std::endl;
250 break;
251 case 3: // Trigger time
252 vtpData->trigTime = (data & 0x00FFFFFF) + ((secondWord & 0x00FFFFFF )<<24);
253 //std::cout << i << "&" << i+1 << " trigTime = " << vtpData->trigTime << std::endl;
254 i++;
255 break;
256 case 12: // Expansion type
257 subtype = (data>>23)&0x0F;
258 switch(subtype){
259 case 2: // HPS Cluster
261 clus.X = (data )&0x0003F;
262 // If the first bit of the index is 1, then it is a negative number
263 if((clus.X >> 5 & 0x1) == 0x1) clus.X = -((clus.X ^ 0x3F) + 1);
264 clus.Y = (data >> 6)&0x0000F;
265 // If the first bit of the index is 1, then it is a negative number
266 if((clus.Y >> 3 & 0x1) == 0x1) clus.Y = -((clus.Y ^ 0xF) + 1);
267 clus.E = (data >> 10)&0x01FFF;
268 clus.subtype = (data >> 23)&0x0000F;
269 clus.type = (data >> 27)&0x0000F;
270 clus.istype = (data >> 31)&0x00001;
271 clus.T = (secondWord )&0x003FF;
272 clus.N = (secondWord >> 10)&0x0000F;
273 clus.nothing = (secondWord >> 14)&0x3FFFF;
274 vtpData->clusters.push_back(clus);
275 //std::cout << i << "&" << i+1 << " HPS Cluster " << clus.E << std::endl;
276 i++;
277 break;
278 case 3: // HPS Single Trigger
280 strig.T = (data )&0x003FF;
281 strig.emin = (data >> 10)&0x00001;
282 strig.emax = (data >> 11)&0x00001;
283 strig.nmin = (data >> 12)&0x00001;
284 strig.xmin = (data >> 13)&0x00001;
285 strig.pose = (data >> 14)&0x00001;
286 strig.hodo1c = (data >> 15)&0x00001;
287 strig.hodo2c = (data >> 16)&0x00001;
288 strig.hodogeo = (data >> 17)&0x00001;
289 strig.hodoecal = (data >> 18)&0x00001;
290 strig.topnbot = (data >> 19)&0x00001;
291 strig.inst = (data >> 20)&0x00007;
292 strig.subtype = (data >> 23)&0x0000F;
293 strig.type = (data >> 27)&0x0000F;
294 strig.istype = (data >> 31)&0x00001;
295 //std::cout << i << " HPS Single Trigger " << strig.subtype << std::endl;
296 vtpData->singletrigs.push_back(strig);
297 break;
298 case 4: // HPS Pair Trigger
300 ptrig.T = (data )&0x003FF;
301 ptrig.clusesum = (data >> 10)&0x00001;
302 ptrig.clusedif = (data >> 11)&0x00001;
303 ptrig.eslope = (data >> 12)&0x00001;
304 ptrig.coplane = (data >> 13)&0x00001;
305 ptrig.dummy = (data >> 14)&0x0001F;
306 ptrig.topnbot = (data >> 19)&0x00001;
307 ptrig.inst = (data >> 20)&0x00007;
308 ptrig.subtype = (data >> 23)&0x0000F;
309 ptrig.type = (data >> 27)&0x0000F;
310 ptrig.istype = (data >> 31)&0x00001;
311 //std::cout << i << " HPS Pair Trigger " << ptrig.subtype << std::endl;
312 vtpData->pairtrigs.push_back(ptrig);
313 break;
314 case 5: // HPS Calibration Trigger
316 ctrig.T = (data )&0x003FF;
317 ctrig.reserved = (data >> 10)&0x001FF;
318 ctrig.cosmicTrig = (data >> 19)&0x00001;
319 ctrig.LEDTrig = (data >> 20)&0x00001;
320 ctrig.hodoTrig = (data >> 21)&0x00001;
321 ctrig.pulserTrig = (data >> 22)&0x00001;
322 ctrig.subtype = (data >> 23)&0x0000F;
323 ctrig.type = (data >> 27)&0x0000F;
324 ctrig.istype = (data >> 31)&0x00001;
325 //std::cout << i << " HPS Cal Trigger " << ctrig.subtype << std::endl;
326 vtpData->calibtrigs.push_back(ctrig);
327 break;
328 case 6: // HPS Cluster Multiplicity Trigger
330 clmul.T = (data )&0x003FF;
331 clmul.multtop = (data >> 10)&0x0000F;
332 clmul.multbot = (data >> 14)&0x0000F;
333 clmul.multtot = (data >> 18)&0x0000F;
334 clmul.bitinst = (data >> 22)&0x00001;
335 clmul.subtype = (data >> 23)&0x0000F;
336 clmul.type = (data >> 27)&0x0000F;
337 clmul.istype = (data >> 31)&0x00001;
338 //std::cout << i << " HPS Clus Mult Trigger " << clmul.subtype << std::endl;
339 vtpData->clustermult.push_back(clmul);
340 break;
341 case 7: // HPS FEE Trigger
343 fee.T = (data )&0x003FF;
344 fee.region = (data >> 10)&0x0007F;
345 fee.reserved = (data >> 17)&0x0003F;
346 fee.subtype = (data >> 23)&0x0000F;
347 fee.type = (data >> 27)&0x0000F;
348 fee.istype = (data >> 31)&0x00001;
349 //std::cout << i << " HPS FEE Trigger " << fee.subtype << std::endl;
350 vtpData->feetrigger.push_back(fee);
351 break;
352 default:
353 std::cout << "At " << i << " invalid HPS type: " << type << " subtype: " << subtype << std::endl;
354 break;
355 }
356
357 break;
358 case 14:
359 std::cout << i << "VTP data type not valid: " << type << std::endl;
360 break;
361 default:
362 std::cout << i << "I was not expecting a VTP data type of " << type << std::endl;
363 break;
364 }
365 }
366 //std::cout << "---------------------------------------" << std::endl;
367 //std::cout << std::endl;
368} //EventProcessor::parseVTPData(LCGenericObject* vtp_data_lcio)
369
370void EventProcessor::parseTSData(EVENT::LCGenericObject* ts_data_lcio)
371{
372 // Parse out TS header
373 unsigned int headerWord = ts_data_lcio->getIntVal(1);
374 tsData->header.wordCount = (headerWord )&0xFFFF; // 0-15 Word Count
375 tsData->header.test = (headerWord >> 16)&0x00FF; // 16-23 Test Word
376 tsData->header.type = (headerWord >> 24)&0x00FF; // 24-31 Trigger Type
377 // Parse out trigger time and Event Number
378 tsData->T = static_cast<unsigned long>(ts_data_lcio->getIntVal(3)) + ( (static_cast<unsigned long>(ts_data_lcio->getIntVal(4)&0xFFFF)<<32));
379 tsData->EN = static_cast<unsigned long>(ts_data_lcio->getIntVal(2)) + ( (static_cast<unsigned long>(ts_data_lcio->getIntVal(4)&0xFFFF0000)<<16));
380 // Parse out prescaled word
381 tsData->prescaled.intval = ts_data_lcio->getIntVal(5); // Full word
382 tsData->prescaled.Single_0_Top = (tsData->prescaled.intval )&0x001; // 0 Low energy cluster
383 tsData->prescaled.Single_1_Top = (tsData->prescaled.intval >> 1)&0x001; // 1 e+
384 tsData->prescaled.Single_2_Top = (tsData->prescaled.intval >> 2)&0x001; // 2 e+ : Position dependent energy cut
385 tsData->prescaled.Single_3_Top = (tsData->prescaled.intval >> 3)&0x001; // 3 e+ : HODO L1*L2 Match with cluster
386 tsData->prescaled.Single_0_Bot = (tsData->prescaled.intval >> 4)&0x001; // 4 Low energy cluster
387 tsData->prescaled.Single_1_Bot = (tsData->prescaled.intval >> 5)&0x001; // 5 e+
388 tsData->prescaled.Single_2_Bot = (tsData->prescaled.intval >> 6)&0x001; // 6 e+ : Position dependent energy cut
389 tsData->prescaled.Single_3_Bot = (tsData->prescaled.intval >> 7)&0x001; // 7 e+ : HODO L1*L2 Match with cluster
390 tsData->prescaled.Pair_0 = (tsData->prescaled.intval >> 8)&0x001; // 8 A'
391 tsData->prescaled.Pair_1 = (tsData->prescaled.intval >> 9)&0x001; // 9 Moller
392 tsData->prescaled.Pair_2 = (tsData->prescaled.intval >> 10)&0x001; // 10 pi0
393 tsData->prescaled.Pair_3 = (tsData->prescaled.intval >> 11)&0x001; // 11 -
394 tsData->prescaled.LED = (tsData->prescaled.intval >> 12)&0x001; // 12 LED
395 tsData->prescaled.Cosmic = (tsData->prescaled.intval >> 13)&0x001; // 13 Cosmic
396 tsData->prescaled.Hodoscope = (tsData->prescaled.intval >> 14)&0x001; // 14 Hodoscope
397 tsData->prescaled.Pulser = (tsData->prescaled.intval >> 15)&0x001; // 15 Pulser
398 tsData->prescaled.Mult_0 = (tsData->prescaled.intval >> 16)&0x001; // 16 Multiplicity-0 2 Cluster Trigger
399 tsData->prescaled.Mult_1 = (tsData->prescaled.intval >> 17)&0x001; // 17 Multiplicity-1 3 Cluster trigger
400 tsData->prescaled.FEE_Top = (tsData->prescaled.intval >> 18)&0x001; // 18 FEE Top ( 2600-5200)
401 tsData->prescaled.FEE_Bot = (tsData->prescaled.intval >> 19)&0x001; // 19 FEE Bot ( 2600-5200)
402 tsData->prescaled.NA = (tsData->prescaled.intval >> 20)&0xFFF; // 20-31 Not used
403 // Parse out ext word
404 tsData->ext.intval = ts_data_lcio->getIntVal(6); // Full word
405 tsData->ext.Single_0_Top = (tsData->ext.intval )&0x001; // 0 Low energy cluster
406 tsData->ext.Single_1_Top = (tsData->ext.intval >> 1)&0x001; // 1 e+
407 tsData->ext.Single_2_Top = (tsData->ext.intval >> 2)&0x001; // 2 e+ : Position dependent energy cut
408 tsData->ext.Single_3_Top = (tsData->ext.intval >> 3)&0x001; // 3 e+ : HODO L1*L2 Match with cluster
409 tsData->ext.Single_0_Bot = (tsData->ext.intval >> 4)&0x001; // 4 Low energy cluster
410 tsData->ext.Single_1_Bot = (tsData->ext.intval >> 5)&0x001; // 5 e+
411 tsData->ext.Single_2_Bot = (tsData->ext.intval >> 6)&0x001; // 6 e+ : Position dependent energy cut
412 tsData->ext.Single_3_Bot = (tsData->ext.intval >> 7)&0x001; // 7 e+ : HODO L1*L2 Match with cluster
413 tsData->ext.Pair_0 = (tsData->ext.intval >> 8)&0x001; // 8 A'
414 tsData->ext.Pair_1 = (tsData->ext.intval >> 9)&0x001; // 9 Moller
415 tsData->ext.Pair_2 = (tsData->ext.intval >> 10)&0x001; // 10 pi0
416 tsData->ext.Pair_3 = (tsData->ext.intval >> 11)&0x001; // 11 -
417 tsData->ext.LED = (tsData->ext.intval >> 12)&0x001; // 12 LED
418 tsData->ext.Cosmic = (tsData->ext.intval >> 13)&0x001; // 13 Cosmic
419 tsData->ext.Hodoscope = (tsData->ext.intval >> 14)&0x001; // 14 Hodoscope
420 tsData->ext.Pulser = (tsData->ext.intval >> 15)&0x001; // 15 Pulser
421 tsData->ext.Mult_0 = (tsData->ext.intval >> 16)&0x001; // 16 Multiplicity-0 2 Cluster Trigger
422 tsData->ext.Mult_1 = (tsData->ext.intval >> 17)&0x001; // 17 Multiplicity-1 3 Cluster trigger
423 tsData->ext.FEE_Top = (tsData->ext.intval >> 18)&0x001; // 18 FEE Top ( 2600-5200)
424 tsData->ext.FEE_Bot = (tsData->ext.intval >> 19)&0x001; // 19 FEE Bot ( 2600-5200)
425 tsData->ext.NA = (tsData->ext.intval >> 20)&0xFFF; // 20-31 Not used
426} //EventProcessor::parstsData->eTSData(LCGenericObject* ts_data_lcio)
427
430
Processor used to write event info.
#define DECLARE_PROCESSOR(CLASS)
Macro which allows the framework to construct a producer given its name during configuration.
Definition Processor.h:139
void setRunNumber(const int run_number)
Definition EventHeader.h:66
void setSvtLatencyState(const int svt_latency_state)
void setPulserTrigger(const int pulser_trigger)
int getRunNumber() const
Definition EventHeader.h:69
void setPair0Trigger(const int pair0_trigger)
Definition EventHeader.h:75
void setEventNumber(const int event_number)
Definition EventHeader.h:47
void setSvtBiasState(const int svt_bias_state)
void setSingle1Trigger(const int single1_trigger)
void setSvtBurstModeNoise(const int svt_burstmode_noise)
void setSvtPositionState(const int svt_position_state)
void setEventTime(const long event_time)
Definition EventHeader.h:58
void setRfTime(const int channel, const double rf_time)
void setPair1Trigger(const int pair1_trigger)
Definition EventHeader.h:91
void setSingle0Trigger(const int single0_trigger)
void setSvtEventHeaderState(const int svt_event_header_state)
Processor used to write event info. more details.
EventHeader * header_
std::string tsCollRoot_
description
std::string vtpCollRoot_
description
int debug_
Debug Level.
std::string headCollRoot_
description
virtual void configure(const ParameterSet &parameters)
Callback for the Processor to configure itself from the given set of parameters.
virtual void finalize()
Callback for the Processor to take any necessary action when the processing of events finishes.
std::string trigCollLcio_
description
virtual void initialize(TTree *tree)
Callback for the Processor to take any necessary action when the processing of events starts.
std::string run_evt_list_
EventProcessor(const std::string &name, Process &process)
Class constructor.
std::map< int, std::vector< int > > run_evts_map_
description
std::string rfCollLcio_
description
std::string tsCollLcio_
description
void parseTSData(EVENT::LCGenericObject *ts_data_lcio)
std::string vtpCollLcio_
description
void parseVTPData(EVENT::LCGenericObject *vtp_data_lcio)
Definition Event.h:35
Definition IEvent.h:7
description
Base class for all event processing components.
Definition Processor.h:34
virtual bool process()
Process the histograms and generate analysis output.
Definition Processor.h:95
unsigned long T
Definition TSData.h:70
struct TSData::tsHeader header
tsBits prescaled
Definition TSData.h:66
tsBits ext
Definition TSData.h:67
unsigned long EN
Definition TSData.h:69
bool isPair0Trigger() const
Definition TriggerData.h:37
bool isPair1Trigger() const
Definition TriggerData.h:40
bool isSingle0Trigger() const
Definition TriggerData.h:31
bool isPulserTrigger() const
Definition TriggerData.h:43
bool isSingle1Trigger() const
Definition TriggerData.h:34
std::vector< hpsCalibTrig > calibtrigs
Definition VTPData.h:111
std::vector< hpsCluster > clusters
Definition VTPData.h:61
std::vector< hpsPairTrig > pairtrigs
Definition VTPData.h:97
std::vector< hpsFEETrig > feetrigger
Definition VTPData.h:135
unsigned long trigTime
Definition VTPData.h:47
std::vector< hpsClusterMult > clustermult
Definition VTPData.h:124
void Clear()
Definition VTPData.h:143
bTail blockTail
Definition VTPData.h:38
eHeader eventHeader
Definition VTPData.h:45
bHeader blockHeader
Definition VTPData.h:30
std::vector< hpsSingleTrig > singletrigs
Definition VTPData.h:81
bool Pulser
Definition TSData.h:58
bool Cosmic
Definition TSData.h:56
bool Single_1_Bot
Definition TSData.h:48
bool Pair_1
Definition TSData.h:52
bool Hodoscope
Definition TSData.h:57
bool Pair_2
Definition TSData.h:53
bool Single_1_Top
Definition TSData.h:44
bool Single_2_Bot
Definition TSData.h:49
bool Mult_0
Definition TSData.h:59
bool Single_0_Bot
Definition TSData.h:47
unsigned int NA
Definition TSData.h:63
bool Single_2_Top
Definition TSData.h:45
unsigned int intval
Definition TSData.h:64
bool Single_0_Top
Definition TSData.h:43
bool Single_3_Top
Definition TSData.h:46
bool Single_3_Bot
Definition TSData.h:50
bool Pair_3
Definition TSData.h:54
bool Mult_1
Definition TSData.h:60
bool FEE_Bot
Definition TSData.h:62
bool Pair_0
Definition TSData.h:51
bool FEE_Top
Definition TSData.h:61
unsigned int slotid
Definition VTPData.h:26
unsigned int type
Definition VTPData.h:27
unsigned int blocklevel
Definition VTPData.h:23
unsigned int nothing
Definition VTPData.h:25
unsigned int blocknum
Definition VTPData.h:24
unsigned int nwords
Definition VTPData.h:33
unsigned int slotid
Definition VTPData.h:34
unsigned int type
Definition VTPData.h:35
unsigned int eventnum
Definition VTPData.h:41
unsigned int type
Definition VTPData.h:42
unsigned int reserved
Definition VTPData.h:101
unsigned int type
Definition VTPData.h:107
unsigned int T
Definition VTPData.h:100
unsigned int subtype
Definition VTPData.h:106
unsigned int multtot
Definition VTPData.h:117
unsigned int multtop
Definition VTPData.h:115
unsigned int type
Definition VTPData.h:120
unsigned int multbot
Definition VTPData.h:116
unsigned int subtype
Definition VTPData.h:119
unsigned int type
Definition VTPData.h:54
unsigned int T
Definition VTPData.h:56
unsigned int E
Definition VTPData.h:52
unsigned int nothing
Definition VTPData.h:58
unsigned int subtype
Definition VTPData.h:53
unsigned int N
Definition VTPData.h:57
unsigned int reserved
Definition VTPData.h:129
unsigned int type
Definition VTPData.h:131
unsigned int region
Definition VTPData.h:128
unsigned int T
Definition VTPData.h:127
unsigned int subtype
Definition VTPData.h:130
unsigned int type
Definition VTPData.h:93
unsigned int T
Definition VTPData.h:84
unsigned int inst
Definition VTPData.h:91
unsigned int subtype
Definition VTPData.h:92
unsigned int dummy
Definition VTPData.h:89
unsigned int type
Definition VTPData.h:77
unsigned int T
Definition VTPData.h:64
unsigned int inst
Definition VTPData.h:75
unsigned int subtype
Definition VTPData.h:76