Skip to content

Commit 8797bae

Browse files
shahor02alcaliva
authored andcommitted
calculate run 1st orbit only when not available from CCDB
(cherry picked from commit 3d639dd)
1 parent afaec20 commit 8797bae

File tree

1 file changed

+18
-91
lines changed

1 file changed

+18
-91
lines changed

DataFormats/Parameters/src/AggregatedRunInfo.cxx

Lines changed: 18 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -53,106 +53,33 @@ o2::parameters::AggregatedRunInfo AggregatedRunInfo::buildAggregatedRunInfo(int
5353
{
5454
auto nOrbitsPerTF = grpecs->getNHBFPerTF();
5555
// calculate SOR/EOR orbits
56-
int64_t orbitSOR = (sorMS * 1000 - orbitResetMUS) / o2::constants::lhc::LHCOrbitMUS;
57-
int64_t orbitEOR = (eorMS * 1000 - orbitResetMUS) / o2::constants::lhc::LHCOrbitMUS;
58-
// adjust to the nearest TF edge to satisfy condition (orbitSOR % nOrbitsPerTF == 0)
59-
orbitSOR = (orbitSOR / nOrbitsPerTF + 1) * nOrbitsPerTF; // +1 to choose the safe boundary ... towards run middle
60-
orbitEOR = orbitEOR / nOrbitsPerTF * nOrbitsPerTF;
61-
// temporary map of orbit shifts for runs <=LHC22m (while waiting for complete run list from CTP/Calib/FirstRunOrbit)
62-
std::map<int, int> mapOrbitShift;
63-
mapOrbitShift[517619] = 109;
64-
mapOrbitShift[517620] = 109;
65-
mapOrbitShift[517623] = 109;
66-
mapOrbitShift[517677] = 127;
67-
mapOrbitShift[517678] = 127;
68-
mapOrbitShift[517679] = 127;
69-
mapOrbitShift[517685] = 127;
70-
mapOrbitShift[517690] = 127;
71-
mapOrbitShift[517693] = 127;
72-
mapOrbitShift[517737] = 127;
73-
mapOrbitShift[517748] = 127;
74-
mapOrbitShift[517751] = 127;
75-
mapOrbitShift[517753] = 127;
76-
mapOrbitShift[517758] = 127;
77-
mapOrbitShift[517767] = 127;
78-
mapOrbitShift[518541] = 40;
79-
mapOrbitShift[518543] = 92;
80-
mapOrbitShift[518546] = 124;
81-
mapOrbitShift[518547] = 47;
82-
mapOrbitShift[519041] = 59;
83-
mapOrbitShift[519043] = 59;
84-
mapOrbitShift[519045] = 59;
85-
mapOrbitShift[519497] = 86;
86-
mapOrbitShift[519498] = 86;
87-
mapOrbitShift[519499] = 86;
88-
mapOrbitShift[519502] = 86;
89-
mapOrbitShift[519503] = 86;
90-
mapOrbitShift[519504] = 86;
91-
mapOrbitShift[519506] = 86;
92-
mapOrbitShift[519507] = 86;
93-
mapOrbitShift[519903] = 62;
94-
mapOrbitShift[519904] = 62;
95-
mapOrbitShift[519905] = 62;
96-
mapOrbitShift[519906] = 62;
97-
mapOrbitShift[520259] = 76;
98-
mapOrbitShift[520294] = 76;
99-
mapOrbitShift[520471] = 46;
100-
mapOrbitShift[520472] = 46;
101-
mapOrbitShift[520473] = 46;
102-
mapOrbitShift[523142] = 127;
103-
mapOrbitShift[523148] = 127;
104-
mapOrbitShift[523182] = 127;
105-
mapOrbitShift[523186] = 127;
106-
mapOrbitShift[523298] = 28;
107-
mapOrbitShift[523306] = 28;
108-
mapOrbitShift[523308] = 28;
109-
mapOrbitShift[523309] = 28;
110-
mapOrbitShift[523397] = 110;
111-
mapOrbitShift[523399] = 110;
112-
mapOrbitShift[523401] = 110;
113-
mapOrbitShift[523441] = 117;
114-
mapOrbitShift[523541] = 103;
115-
mapOrbitShift[523559] = 103;
116-
mapOrbitShift[523669] = 39;
117-
mapOrbitShift[523671] = 39;
118-
mapOrbitShift[523677] = 39;
119-
mapOrbitShift[523728] = 113;
120-
mapOrbitShift[523731] = 113;
121-
mapOrbitShift[523779] = 41;
122-
mapOrbitShift[523783] = 41;
123-
mapOrbitShift[523786] = 41;
124-
mapOrbitShift[523788] = 41;
125-
mapOrbitShift[523789] = 41;
126-
mapOrbitShift[523792] = 41;
127-
mapOrbitShift[523797] = 41;
128-
mapOrbitShift[523821] = 36;
129-
mapOrbitShift[523897] = 38;
130-
if (mapOrbitShift.find(runnumber) != mapOrbitShift.end()) {
131-
orbitSOR += mapOrbitShift[runnumber];
132-
orbitEOR += mapOrbitShift[runnumber];
133-
}
134-
56+
int64_t orbitSOR = -1;
13557
if (ctfFirstRunOrbitVec && ctfFirstRunOrbitVec->size() >= 3) { // if we have CTP first run orbit available, we should use it
13658
int64_t creation_timeIGNORED = (*ctfFirstRunOrbitVec)[0]; // do not use CTP start of run time!
13759
int64_t ctp_run_number = (*ctfFirstRunOrbitVec)[1];
13860
int64_t ctp_orbitSOR = (*ctfFirstRunOrbitVec)[2];
13961
if (creation_timeIGNORED == -1 && ctp_run_number == -1 && ctp_orbitSOR == -1) {
140-
LOGP(warn, "Default dummy CTP/Calib/FirstRunOrbit was provide, ignoring");
141-
} else if (ctp_run_number == runnumber) { // overwrite orbitSOR
142-
if (ctp_orbitSOR != orbitSOR) {
143-
LOGP(warn, "The calculated orbitSOR {} differs from CTP orbitSOR {}", orbitSOR, ctp_orbitSOR);
144-
// reasons for this is different unit of time storage in RunInformation (ms) and orbitReset (us), etc.
145-
// so we need to adjust the SOR timings to be consistent
146-
auto sor_new = (int64_t)((orbitResetMUS + ctp_orbitSOR * o2::constants::lhc::LHCOrbitMUS) / 1000.);
147-
if (sor_new != sorMS) {
148-
LOGP(warn, "Adjusting SOR from {} to {}", sorMS, sor_new);
149-
sorMS = sor_new;
150-
}
151-
}
62+
LOGP(warn, "Default dummy CTP/Calib/FirstRunOrbit was provides, ignoring");
63+
} else if (ctp_run_number == runnumber) {
15264
orbitSOR = ctp_orbitSOR;
65+
auto sor_new = (int64_t)((orbitResetMUS + ctp_orbitSOR * o2::constants::lhc::LHCOrbitMUS) / 1000.);
66+
if (sor_new != sorMS) {
67+
LOGP(warn, "Adjusting SOR from {} to {}", sorMS, sor_new);
68+
sorMS = sor_new;
69+
}
15370
} else {
15471
LOGP(error, "AggregatedRunInfo: run number inconsistency found (asked: {} vs CTP found: {}, ignoring", runnumber, ctp_run_number);
15572
}
15673
}
74+
int64_t orbitEOR = (eorMS * 1000 - orbitResetMUS) / o2::constants::lhc::LHCOrbitMUS;
75+
if (runnumber > 523897) { // condition was introduced starting from LHC22o
76+
orbitEOR = orbitEOR / nOrbitsPerTF * nOrbitsPerTF;
77+
}
78+
if (orbitSOR < 0) { // extract from SOR
79+
orbitSOR = (sorMS * 1000 - orbitResetMUS) / o2::constants::lhc::LHCOrbitMUS;
80+
if (runnumber > 523897) {
81+
orbitSOR = (orbitSOR / nOrbitsPerTF + 1) * nOrbitsPerTF;
82+
}
83+
}
15784
return AggregatedRunInfo{runnumber, sorMS, eorMS, nOrbitsPerTF, orbitResetMUS, orbitSOR, orbitEOR, grpecs};
15885
}

0 commit comments

Comments
 (0)