Skip to content

Commit 6f3b991

Browse files
committed
Rename hmpid::Event to Trigger, use mDataRange for digits indexing
1 parent bddef2a commit 6f3b991

File tree

12 files changed

+71
-78
lines changed

12 files changed

+71
-78
lines changed

DataFormats/Detectors/HMPID/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
# submit itself to any jurisdiction.
1010

1111
o2_add_library(DataFormatsHMP
12-
SOURCES src/Digit.cxx src/Cluster.cxx src/Trigger.cxx
12+
SOURCES src/Digit.cxx
13+
src/Cluster.cxx
14+
src/Trigger.cxx
1315
PUBLIC_LINK_LIBRARIES O2::ReconstructionDataFormats
1416
O2::HMPIDBase
1517
O2::CommonDataFormat

DataFormats/Detectors/HMPID/include/DataFormatsHMP/Digit.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,19 +78,15 @@ class Digit
7878

7979
// Getter & Setters
8080
uint16_t getCharge() const { return mQ; }
81-
void setCharge(uint16_t Q)
82-
{
83-
mQ = Q;
84-
return;
85-
};
81+
void setCharge(uint16_t Q) { mQ = Q; };
82+
8683
int getPadID() const { return mCh << 24 | mPh << 16 | mX << 8 | mY; }
8784
void setPadID(uint32_t pad)
8885
{
8986
mCh = pad >> 24;
9087
mPh = (pad & 0x00FF0000) >> 16;
9188
mX = (pad & 0x0000FF00) >> 8;
9289
mY = (pad & 0x000000FF);
93-
return;
9490
};
9591

9692
bool isValid() { return (mCh == 0xFF ? true : false); };
@@ -118,6 +114,12 @@ class Digit
118114
}
119115
void subCharge(float q) { mQ -= q; }
120116

117+
uint16_t getQ() const { return mQ; }
118+
uint8_t getCh() const { return mCh; }
119+
uint8_t getPh() const { return mPh; }
120+
uint8_t getX() const { return mX; }
121+
uint8_t getY() const { return mY; }
122+
121123
public:
122124
// Members
123125
uint16_t mQ = 0;

DataFormats/Detectors/HMPID/include/DataFormatsHMP/Trigger.h

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,33 @@
1919

2020
#include <iosfwd>
2121
#include "CommonDataFormat/InteractionRecord.h"
22+
#include "CommonDataFormat/RangeReference.h"
2223

2324
namespace o2
2425
{
2526
namespace hmpid
2627
{
2728
/// \class Trigger
2829
/// \brief HMPID Trigger declaration
29-
class Event
30+
class Trigger
3031
{
32+
using DataRange = o2::dataformats::RangeReference<int>;
33+
3134
public:
3235
static inline uint64_t getTriggerID(uint32_t Orbit, uint16_t BC) { return ((Orbit << 12) | (0x0FFF & BC)); };
3336

3437
public:
35-
Event() = default;
36-
Event(InteractionRecord ir, int32_t first, int32_t last)
37-
{
38-
mIr.bc = ir.bc;
39-
mIr.orbit = ir.orbit;
40-
mFirstDigit = first;
41-
mLastDigit = last;
42-
};
38+
Trigger() = default;
39+
Trigger(InteractionRecord ir, int32_t first, int32_t n) : mIr(ir), mDataRange(first, n) {}
40+
4341
const InteractionRecord& getIr() const { return mIr; };
4442
uint32_t getOrbit() const { return mIr.orbit; };
4543
uint16_t getBc() const { return mIr.bc; };
4644
uint64_t getTriggerID() const { return ((mIr.orbit << 12) | (0x0FFF & mIr.bc)); };
45+
void setDataRange(int firstentry, int nentries) { mDataRange.set(firstentry, nentries); }
46+
int getNumberOfObjects() const { return mDataRange.getEntries(); }
47+
int getFirstEntry() const { return mDataRange.getFirstEntry(); }
48+
int getLastEntry() const { return mDataRange.getFirstEntry() + mDataRange.getEntries() - 1; }
4749
void setOrbit(uint32_t orbit)
4850
{
4951
mIr.orbit = orbit;
@@ -60,33 +62,24 @@ class Event
6062
mIr.bc = (trigger & 0x0FFF);
6163
return;
6264
}
63-
void setDigitsPointer(int32_t first, int32_t last)
64-
{
65-
mFirstDigit = first;
66-
mLastDigit = last;
67-
return;
68-
}
6965

7066
// Operators definition !
71-
friend inline bool operator<(const Event& l, const Event& r) { return l.getTriggerID() < r.getTriggerID(); };
72-
friend inline bool operator==(const Event& l, const Event& r) { return l.getTriggerID() == r.getTriggerID(); };
73-
friend inline bool operator>(const Event& l, const Event& r) { return r < l; };
74-
friend inline bool operator<=(const Event& l, const Event& r) { return !(l > r); };
75-
friend inline bool operator>=(const Event& l, const Event& r) { return !(l < r); };
76-
friend inline bool operator!=(const Event& l, const Event& r) { return !(l == r); };
67+
friend inline bool operator<(const Trigger& l, const Trigger& r) { return l.getTriggerID() < r.getTriggerID(); };
68+
friend inline bool operator==(const Trigger& l, const Trigger& r) { return l.getTriggerID() == r.getTriggerID(); };
69+
friend inline bool operator>(const Trigger& l, const Trigger& r) { return r < l; };
70+
friend inline bool operator<=(const Trigger& l, const Trigger& r) { return !(l > r); };
71+
friend inline bool operator>=(const Trigger& l, const Trigger& r) { return !(l < r); };
72+
friend inline bool operator!=(const Trigger& l, const Trigger& r) { return !(l == r); };
7773

7874
// Digit ASCII format (Orbit,BunchCrossing)[LHC Time nSec]
79-
friend std::ostream& operator<<(std::ostream& os, const Event& d);
80-
81-
public:
82-
int32_t mFirstDigit = 0;
83-
int32_t mLastDigit = -1;
75+
friend std::ostream& operator<<(std::ostream& os, const Trigger& d);
8476

8577
private:
8678
// Members
8779
InteractionRecord mIr;
80+
DataRange mDataRange; /// Index of the triggering event (event index and first entry in the container)
8881

89-
ClassDefNV(Event, 2);
82+
ClassDefNV(Trigger, 2);
9083
};
9184

9285
} // namespace hmpid

DataFormats/Detectors/HMPID/src/DataFormatsHMPLinkDef.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#pragma link C++ class vector < o2::hmpid::HitType> + ;
2121
#pragma link C++ class o2::hmpid::Cluster + ;
2222
#pragma link C++ class vector < o2::hmpid::Cluster> + ;
23-
#pragma link C++ class o2::hmpid::Event + ;
24-
#pragma link C++ class vector < o2::hmpid::Event> + ;
23+
#pragma link C++ class o2::hmpid::Trigger + ;
24+
#pragma link C++ class vector < o2::hmpid::Trigger> + ;
2525

2626
#endif

DataFormats/Detectors/HMPID/src/Trigger.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@
2222
#include <iostream>
2323
#include "DataFormatsHMP/Trigger.h"
2424

25-
ClassImp(o2::hmpid::Event);
25+
ClassImp(o2::hmpid::Trigger);
2626

2727
namespace o2
2828
{
2929
namespace hmpid
3030
{
3131

3232
// Digit ASCCI format Dump := (Orbit,BC @ LHCtime ns) [first_digit_idx .. last_digit_idx]
33-
std::ostream& operator<<(std::ostream& os, const o2::hmpid::Event& d)
33+
std::ostream& operator<<(std::ostream& os, const o2::hmpid::Trigger& d)
3434
{
35-
os << "(" << d.mIr.orbit << "," << d.mIr.bc << " @ " << d.mIr.bc2ns() << " ns) [" << d.mFirstDigit << " .. " << d.mLastDigit << "]";
35+
os << "(" << d.mIr.orbit << "," << d.mIr.bc << " @ " << d.mIr.bc2ns() << " ns) [" << d.mDataRange.getFirstEntry() << "," << d.mDataRange.getEntries() << "]";
3636
return os;
3737
};
3838

Detectors/HMPID/workflow/include/HMPIDWorkflow/RawToDigitsSpec.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class RawToDigitsTask : public framework::Task
5151
o2::raw::RawFileReader mReader;
5252
o2::hmpid::HmpidDecoder2* mDecod;
5353
std::vector<o2::hmpid::Digit> mAccumulateDigits;
54-
std::vector<o2::hmpid::Event> mEvents;
54+
std::vector<o2::hmpid::Trigger> mEvents;
5555

5656
long mDigitsReceived;
5757
long mFramesReceived;

Detectors/HMPID/workflow/include/HMPIDWorkflow/WriteRawFileSpec.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class WriteRawFileTask : public framework::Task
3838
// static bool eventEquipPadsComparision(o2::hmpid::Digit d1, o2::hmpid::Digit d2);
3939
std::string mBaseFileName = "";
4040
std::vector<o2::hmpid::Digit> mDigits;
41-
std::vector<o2::hmpid::Event> mEvents;
41+
std::vector<o2::hmpid::Trigger> mEvents;
4242
bool mSkipEmpty = false;
4343
bool mFixedPacketLenght = false;
4444
bool mOrderTheEvents = true;

Detectors/HMPID/workflow/src/DigitsToRawSpec.cxx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
/// \author Antonio Franco - INFN Bari
1313
/// \version 1.0
1414
/// \date 01 feb 2021
15-
/// \brief Implementation of a data processor to produce raw files from a Digits/Event root file
15+
/// \brief Implementation of a data processor to produce raw files from a Digits/Trigger root file
1616
///
1717

1818
#include <random>
@@ -108,7 +108,7 @@ void DigitsToRawSpec::readRootFile()
108108
{
109109
std::vector<o2::hmpid::Digit> digitsPerEvent;
110110
std::vector<o2::hmpid::Digit> digits, *hmpBCDataPtr = &digits;
111-
std::vector<o2::hmpid::Event> interactions, *interactionsPtr = &interactions;
111+
std::vector<o2::hmpid::Trigger> interactions, *interactionsPtr = &interactions;
112112

113113
// Keeps the Interactions !
114114
mDigTree->SetBranchAddress("InteractionRecords", &interactionsPtr);
@@ -135,20 +135,20 @@ void DigitsToRawSpec::readRootFile()
135135
if (mDumpDigits) { // we want the dump of digits ?
136136
std::ofstream dumpfile;
137137
dumpfile.open("/tmp/hmpDumpDigits.dat");
138-
for (o2::hmpid::Event e : interactions) {
139-
dumpfile << "Event Orbit=" << e.getOrbit() << " BC=" << e.getBc() << std::endl;
140-
for (int i = e.mFirstDigit; i <= e.mLastDigit; i++) {
138+
for (o2::hmpid::Trigger& e : interactions) {
139+
dumpfile << "Trigger Orbit=" << e.getOrbit() << " BC=" << e.getBc() << std::endl;
140+
for (int i = e.getFirstEntry(); i <= e.getLastEntry(); i++) {
141141
dumpfile << digits.at(i) << std::endl;
142142
}
143143
}
144144
dumpfile.close();
145145
}
146146
// ready to operate
147147
LOG(INFO) << "For the entry = " << ient << " there are " << nbc << " DIGITS stored.";
148-
for (o2::hmpid::Event e : interactions) {
148+
for (o2::hmpid::Trigger& e : interactions) {
149149
mEventsReceived++;
150150
digitsPerEvent.clear();
151-
for (int i = e.mFirstDigit; i <= e.mLastDigit; i++) {
151+
for (int i = e.getFirstEntry(); i <= e.getLastEntry(); i++) {
152152
digitsPerEvent.push_back(digits[i]);
153153
}
154154
LOG(DEBUG) << "Orbit =" << e.getOrbit() << " BC =" << e.getBc() << " Digits =" << digitsPerEvent.size();

Detectors/HMPID/workflow/src/RawToDigitsSpec.cxx

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ void RawToDigitsTask::run(framework::ProcessingContext& pc)
140140
}
141141
int first = mAccumulateDigits.size();
142142
mAccumulateDigits.insert(mAccumulateDigits.end(), mDecod->mDigits.begin(), mDecod->mDigits.end());
143-
int last = mAccumulateDigits.size() - 1;
144-
if (last >= first) {
145-
mEvents.push_back(o2::hmpid::Event(mDecod->mIntReco, (uint32_t)first, (uint32_t)last));
143+
int last = mAccumulateDigits.size();
144+
if (last > first) {
145+
mEvents.emplace_back(o2::hmpid::Trigger{mDecod->mIntReco, first, last - first});
146146
mDigitsReceived += mDecod->mDigits.size();
147147
}
148148
mFramesReceived++;
@@ -200,9 +200,9 @@ void RawToDigitsTask::parseNoTF()
200200
}
201201
int first = mAccumulateDigits.size();
202202
mAccumulateDigits.insert(mAccumulateDigits.end(), mDecod->mDigits.begin(), mDecod->mDigits.end());
203-
int last = mAccumulateDigits.size() - 1;
204-
if (last >= first) {
205-
mEvents.push_back(o2::hmpid::Event(mDecod->mIntReco, (uint32_t)first, (uint32_t)last));
203+
int last = mAccumulateDigits.size();
204+
if (last > first) {
205+
mEvents.emplace_back(mDecod->mIntReco, first, last - first);
206206
mDigitsReceived += mDecod->mDigits.size();
207207
}
208208
mFramesReceived++;
@@ -236,7 +236,7 @@ void RawToDigitsTask::writeResults()
236236

237237
/* ------ ROOT file version 1 ----------
238238
o2::hmpid::Digit digit;
239-
o2::hmpid::Event event;
239+
o2::hmpid::Trigger event;
240240
TString filename;
241241
TString tit;
242242
@@ -250,32 +250,30 @@ void RawToDigitsTask::writeResults()
250250
theTree = new TTree("o2hmp", tit);
251251
252252
theDigits = theTree->Branch("HMPDigit", &digit, sizeof(o2::hmpid::Digit), 1);
253-
theEvents = theTree->Branch("InteractionRecords", &event, sizeof(o2::hmpid::Event), 1);
253+
theEvents = theTree->Branch("InteractionRecords", &event, sizeof(o2::hmpid::Trigger), 1);
254254
255-
o2::hmpid::Event prevEvent = mEvents[0];
255+
o2::hmpid::Trigger prevEvent = mEvents[0];
256256
uint32_t theFirstDigit = 0;
257257
uint32_t theLastDigit = 0;
258258
for (int e = 0; e < mEvents.size(); e++) {
259259
LOG(INFO) << "Manage event " << mEvents[e];
260260
if (prevEvent != mEvents[e]) { // changes the event Flush It
261261
event = prevEvent;
262-
event.mFirstDigit = theFirstDigit;
263-
event.mLastDigit = theLastDigit-1;
262+
event.setDataRange(theFirstDigit, theLastDigit-theFirstDigit);
264263
theEvents->Fill();
265264
theFirstDigit = theLastDigit;
266265
prevEvent = mEvents[e];
267266
}
268-
int first = mEvents[e].mFirstDigit;
269-
int last = mEvents[e].mLastDigit;
267+
int first = mEvents[e].getFirstEntry();
268+
int last = mEvents[e].getLastEntry();
270269
for(int idx = first; idx <= last; idx++) {
271270
digit = mAccumulateDigits[idx];
272271
theDigits->Fill();
273272
theLastDigit++;
274273
}
275274
}
276275
event = prevEvent;
277-
event.mFirstDigit = theFirstDigit;
278-
event.mLastDigit = theLastDigit-1;
276+
event.setDataRange(theFirstDigit, theLastDigit-theFirstDigit);
279277
theEvents->Fill();
280278
theTree->Write();
281279
mfileOut.Close();
@@ -286,7 +284,7 @@ void RawToDigitsTask::writeResults()
286284
TString tit;
287285

288286
std::vector<o2::hmpid::Digit> digitVec;
289-
std::vector<o2::hmpid::Event> eventVec;
287+
std::vector<o2::hmpid::Trigger> eventVec;
290288

291289
filename = TString::Format("%s", mOutRootFileName.c_str());
292290
LOG(INFO) << "Create the ROOT file " << filename.Data();
@@ -298,24 +296,24 @@ void RawToDigitsTask::writeResults()
298296
theTree->Branch("HMPIDDigits", &digitVec);
299297

300298
// builds the two arranged vectors of objects
301-
o2::hmpid::Event prevEvent = mEvents[0];
299+
o2::hmpid::Trigger prevEvent = mEvents[0];
302300
uint32_t theFirstDigit = 0;
303301
uint32_t theLastDigit = 0;
304302
for (int e = 0; e < mEvents.size(); e++) {
305303
LOG(DEBUG) << "Manage event " << mEvents[e];
306304
if (prevEvent != mEvents[e]) { // changes the event Flush It
307-
eventVec.push_back(o2::hmpid::Event(o2::InteractionRecord(prevEvent.getBc(), prevEvent.getOrbit()), theFirstDigit, theLastDigit - 1));
305+
eventVec.emplace_back(o2::InteractionRecord(prevEvent.getBc(), prevEvent.getOrbit()), theFirstDigit, theLastDigit - theFirstDigit);
308306
theFirstDigit = theLastDigit;
309307
prevEvent = mEvents[e];
310308
}
311-
int first = mEvents[e].mFirstDigit;
312-
int last = mEvents[e].mLastDigit;
309+
int first = mEvents[e].getFirstEntry();
310+
int last = mEvents[e].getLastEntry();
313311
for (int idx = first; idx <= last; idx++) {
314312
digitVec.push_back(mAccumulateDigits[idx]);
315313
theLastDigit++;
316314
}
317315
}
318-
eventVec.push_back(o2::hmpid::Event(o2::InteractionRecord(prevEvent.getBc(), prevEvent.getOrbit()), theFirstDigit, theLastDigit - 1));
316+
eventVec.emplace_back(o2::InteractionRecord(prevEvent.getBc(), prevEvent.getOrbit()), theFirstDigit, theLastDigit - theFirstDigit);
319317
theTree->Fill();
320318
theTree->Write();
321319
mfileOut.Close();

Detectors/HMPID/workflow/src/WriteRawFileSpec.cxx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
/// \brief Implementation of a data processor to produce raw files from a Digits stream
1616
///
1717

18-
#include "../include/HMPIDWorkflow/WriteRawFileSpec.h"
18+
#include "HMPIDWorkflow/WriteRawFileSpec.h"
1919

2020
#include <random>
2121
#include <iostream>
@@ -97,8 +97,7 @@ void WriteRawFileTask::run(framework::ProcessingContext& pc)
9797
if (mOrderTheEvents) {
9898
int first = mDigits.size();
9999
mDigits.insert(mDigits.end(), digits.begin(), digits.end());
100-
int last = mDigits.size() - 1;
101-
mEvents.push_back({intReco, first, last});
100+
mEvents.push_back({intReco, first, int(mDigits.size() - first)});
102101
} else {
103102
mCod->codeEventChunkDigits(digits, intReco);
104103
}
@@ -120,7 +119,7 @@ void WriteRawFileTask::endOfStream(framework::EndOfStreamContext& ec)
120119
uint32_t orbit = mEvents[0].getOrbit();
121120
uint16_t bc = mEvents[0].getBc();
122121
for (int idx = 0; idx < mEvents.size(); idx++) {
123-
if (mSkipEmpty && (mEvents[idx].mLastDigit < mEvents[idx].mFirstDigit || mEvents[idx].getOrbit() == 0)) {
122+
if (mSkipEmpty && (mEvents[idx].getNumberOfObjects() == 0 || mEvents[idx].getOrbit() == 0)) {
124123
continue;
125124
}
126125
if (mEvents[idx].getOrbit() != orbit || mEvents[idx].getBc() != bc) {
@@ -130,7 +129,7 @@ void WriteRawFileTask::endOfStream(framework::EndOfStreamContext& ec)
130129
orbit = mEvents[idx].getOrbit();
131130
bc = mEvents[idx].getBc();
132131
}
133-
for (int i = mEvents[idx].mFirstDigit; i <= mEvents[idx].mLastDigit; i++) {
132+
for (int i = mEvents[idx].getFirstEntry(); i <= mEvents[idx].getLastEntry(); i++) {
134133
dig.push_back(mDigits[i]);
135134
}
136135
}

0 commit comments

Comments
 (0)