Skip to content

Commit d42456c

Browse files
committed
Refactor MC part of AOD producers
The MC part of the AOD producer workflow `o2::aodproducer::AODProducerWorkflowDPL` and `o2::aodmcproducer::AODMcProducerWorkflowDPL` is refactored to use functions from namespace `o2::aodmchelpers`. The helpers are - `updateMCCollisions` which takes in the `MCEventHeader` and writes to the `o2::aod::McCollisions` table. - `updateHepMCXSection` which takes the `MCEventHeader` and writes to the `o2::aodHepMCSections` table. This uses the predefined key constants as defined in `o2::dataformats::MCInfoKeys` - `updateHepMCPdfInfo` similar to `updateHepMCXSection` above - `updateHepMCHeavyIon` similar to `updateHepMCXSection` above - `updateParticle` uses information from an `o2::MCTrack` and writes it to the `o2::aod::McParticles` table - `updateParticles` loops over `o2::MCTrack` objects and calls `updateParticle`. These functions, in particular `updateHepMC...` uses the functions - `hasKeys` which checks if the `MCEventHeader` has any or all of the keys queried. - `getEventInfo` gets auxiliary information from the `MCEventHeader` or a default value. For the `o2::aod::HepMC...` tables: Depending on the policy parameter passed to the `updateHepMC...` functons, these tables may or may not be updated. - If the policy is `HepMCUpdate::never` then the tables are never updated. - If the policy is `HepMCUpdate::always` then the tables are _always_ updated, possibly with default values. - If the policy is `HepMCUpdate::anyKey` (default) or `HepMCUpdate::allKeys`, then the decision of what to do is taken on the first event seen. - If the policy is `HepMCUpdate::anyKey`, then if _any_ of the needed keys are present, then updating will be enabled for this and _all_ subsequent events. - If the policy is `HepMCUpdate::allKeys`, then if _all_ of the needed keys are present, then updating will be enabled for this and _all_ subsequent events. Note that the availability of keys is _not_ checked after the first event. That means, if the criteria isn't met on the first event, then the tables will _never_ be update (as if the policy was `HepMCUpdate::never`). On the other hand, if the criteria was met, than the tables _will_ be update an all events (as if the policy was `HepMCUpdate::always`). Note the slightly tricky template `TableCursor` which allows us to define a type that correponds to a table curser (which is really a lambda). This template could be moved to `AnalysisDataFormats.h` or the like. The applications `o2-aod-producer-workflow` and `o2-aod-mc-producer-workflow` have been updated (via their respective implementation classes) to use these tools, thus unifying how the MC information is propagated to AODs. The utility `o2-sim-mctracks-to-aod` (`run/o2sim_mctracks_to_aod.cxx`) has _also_ been updated to use these common tools. Both `o2-aod-mc-producer-workflow` and `o2-sim-mctracks-to-aod` has been tested extensively. `o2-aod-producer-workflow` has _not_ been tested since it is not clear to me how to set-up such a test with limited resources. However, since the changes _only_ effect the MC part, and that part is now common between the two `o2-aod-{,mc-}producer-workflow` applications, I believe there is no reason to think that it wouldn't work.
1 parent d3ad989 commit d42456c

File tree

200 files changed

+5246
-1890
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

200 files changed

+5246
-1890
lines changed

CCDB/include/CCDB/BasicCCDBManager.h

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ class CCDBManagerInstance
4848
std::string uuid;
4949
long startvalidity = 0;
5050
long endvalidity = -1;
51+
size_t minSize = -1ULL;
52+
size_t maxSize = 0;
5153
int queries = 0;
5254
int fetches = 0;
5355
int failures = 0;
@@ -176,6 +178,10 @@ class CCDBManagerInstance
176178

177179
std::string getSummaryString() const;
178180

181+
size_t getFetchedSize() const { return mFetchedSize; }
182+
183+
void report(bool longrep = false);
184+
179185
void endOfStream();
180186

181187
private:
@@ -190,10 +196,11 @@ class CCDBManagerInstance
190196
bool mCanDefault = false; // whether default is ok --> useful for testing purposes done standalone/isolation
191197
bool mCachingEnabled = true; // whether caching is enabled
192198
bool mCheckObjValidityEnabled = false; // wether the validity of cached object is checked before proceeding to a CCDB API query
199+
bool mFatalWhenNull = true; // if nullptr blob replies should be treated as fatal (can be set by user)
193200
long mCreatedNotAfter = 0; // upper limit for object creation timestamp (TimeMachine mode) - If-Not-After HTTP header
194201
long mCreatedNotBefore = 0; // lower limit for object creation timestamp (TimeMachine mode) - If-Not-Before HTTP header
195202
long mTimerMS = 0; // timer for queries
196-
bool mFatalWhenNull = true; // if nullptr blob replies should be treated as fatal (can be set by user)
203+
size_t mFetchedSize = 0; // total fetched size
197204
int mQueries = 0; // total number of object queries
198205
int mFetches = 0; // total number of succesful fetches from CCDB
199206
int mFailures = 0; // total number of failed fetches
@@ -218,11 +225,16 @@ T* CCDBManagerInstance::getForTimeStamp(std::string const& path, long timestamp)
218225
mFailures++;
219226
} else {
220227
mFetches++;
228+
auto sh = mHeaders.find("fileSize");
229+
if (sh != mHeaders.end()) {
230+
size_t s = atol(sh->second.c_str());
231+
mFetchedSize += s;
232+
}
221233
}
222234
} else {
223235
auto& cached = mCache[path];
236+
cached.queries++;
224237
if (mCheckObjValidityEnabled && cached.isValid(timestamp)) {
225-
cached.queries++;
226238
return reinterpret_cast<T*>(cached.noCleanupPtr ? cached.noCleanupPtr : cached.objPtr.get());
227239
}
228240
ptr = mCCDBAccessor.retrieveFromTFileAny<T>(path, mMetaData, timestamp, &mHeaders, cached.uuid,
@@ -254,6 +266,13 @@ T* CCDBManagerInstance::getForTimeStamp(std::string const& path, long timestamp)
254266
} catch (std::exception const& e) {
255267
reportFatal("Failed to read validity from CCDB response (Valid-From : " + mHeaders["Valid-From"] + std::string(" Valid-Until: ") + mHeaders["Valid-Until"] + std::string(")"));
256268
}
269+
auto sh = mHeaders.find("fileSize");
270+
if (sh != mHeaders.end()) {
271+
size_t s = atol(sh->second.c_str());
272+
mFetchedSize += s;
273+
cached.minSize = std::min(s, cached.minSize);
274+
cached.maxSize = std::max(s, cached.minSize);
275+
}
257276
} else if (mHeaders.count("Error")) { // in case of errors the pointer is 0 and headers["Error"] should be set
258277
cached.failures++;
259278
cached.clear(); // in case of any error clear cache for this object

CCDB/include/CCDB/CcdbApi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ class CcdbApi //: public DatabaseInterface
542542
* @param tcl The TClass object describing the serialized type
543543
* @return raw pointer to created object
544544
*/
545-
void* downloadFilesystemContent(std::string const& fullUrl, std::type_info const& tinfo) const;
545+
void* downloadFilesystemContent(std::string const& fullUrl, std::type_info const& tinfo, std::map<string, string>* headers) const;
546546

547547
// initialize the TGrid (Alien connection)
548548
bool initTGrid() const;

CCDB/src/BasicCCDBManager.cxx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ std::pair<int64_t, int64_t> CCDBManagerInstance::getRunDuration(int runnumber, b
5454

5555
std::string CCDBManagerInstance::getSummaryString() const
5656
{
57-
std::string res = fmt::format("{} queries", mQueries);
57+
std::string res = fmt::format("{} queries, {} bytes", mQueries, fmt::group_digits(mFetchedSize));
5858
if (mCachingEnabled) {
5959
res += fmt::format(" for {} objects", mCache.size());
6060
}
@@ -72,9 +72,20 @@ std::string CCDBManagerInstance::getSummaryString() const
7272
return res;
7373
}
7474

75-
void CCDBManagerInstance::endOfStream()
75+
void CCDBManagerInstance::report(bool longrep)
7676
{
7777
LOG(info) << "CCDBManager summary: " << getSummaryString();
78+
if (longrep && mCachingEnabled) {
79+
LOGP(info, "CCDB cache miss/hit/failures");
80+
for (const auto& obj : mCache) {
81+
LOGP(info, " {}: {}/{}/{} ({}-{} bytes)", obj.first, obj.second.fetches, obj.second.queries - obj.second.fetches - obj.second.failures, obj.second.failures, obj.second.minSize, obj.second.maxSize);
82+
}
83+
}
84+
}
85+
86+
void CCDBManagerInstance::endOfStream()
87+
{
88+
report(true);
7889
}
7990

8091
} // namespace ccdb

CCDB/src/CCDBDownloader.cxx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,10 @@ void CCDBDownloader::transferFinished(CURL* easy_handle, CURLcode curlCode)
529529
(*requestData->headers)["Error"] = "An error occurred during retrieval";
530530
}
531531
LOGP(alarm, "Curl request to {}, response code: {}", url, httpCode);
532+
} else {
533+
if (requestData->headers && requestData->headers->find("fileSize") == requestData->headers->end()) {
534+
(*requestData->headers)["fileSize"] = fmt::format("{}", requestData->hoPair.object ? requestData->hoPair.object->size() : 0);
535+
}
532536
}
533537
--(*performData->requestsLeft);
534538
delete requestData;

CCDB/src/CcdbApi.cxx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,9 @@ void* CcdbApi::extractFromLocalFile(std::string const& filename, std::type_info
832832
if ((isSnapshotMode() || mPreferSnapshotCache) && headers->find("ETag") == headers->end()) { // generate dummy ETag to profit from the caching
833833
(*headers)["ETag"] = filename;
834834
}
835+
if (headers->find("fileSize") == headers->end()) {
836+
(*headers)["fileSize"] = fmt::format("{}", f.GetEND());
837+
}
835838
}
836839
return extractFromTFile(f, tcl);
837840
}
@@ -857,7 +860,7 @@ bool CcdbApi::initTGrid() const
857860
return mAlienInstance != nullptr;
858861
}
859862

860-
void* CcdbApi::downloadFilesystemContent(std::string const& url, std::type_info const& tinfo) const
863+
void* CcdbApi::downloadFilesystemContent(std::string const& url, std::type_info const& tinfo, std::map<string, string>* headers) const
861864
{
862865
if ((url.find("alien:/", 0) != std::string::npos) && !initTGrid()) {
863866
return nullptr;
@@ -867,6 +870,9 @@ void* CcdbApi::downloadFilesystemContent(std::string const& url, std::type_info
867870
if (memfile) {
868871
auto cl = tinfo2TClass(tinfo);
869872
auto content = extractFromTFile(*memfile, cl);
873+
if (headers && headers->find("fileSize") == headers->end()) {
874+
(*headers)["fileSize"] = fmt::format("{}", memfile->GetEND());
875+
}
870876
delete memfile;
871877
return content;
872878
}
@@ -902,7 +908,7 @@ void* CcdbApi::navigateURLsAndRetrieveContent(CURL* curl_handle, std::string con
902908

903909
// let's see first of all if the url is something specific that curl cannot handle
904910
if ((url.find("alien:/", 0) != std::string::npos) || (url.find("file:/", 0) != std::string::npos)) {
905-
return downloadFilesystemContent(url, tinfo);
911+
return downloadFilesystemContent(url, tinfo, headers);
906912
}
907913
// add other final cases here
908914
// example root://
@@ -933,6 +939,9 @@ void* CcdbApi::navigateURLsAndRetrieveContent(CURL* curl_handle, std::string con
933939
if (200 <= response_code && response_code < 300) {
934940
// good response and the content is directly provided and should have been dumped into "chunk"
935941
content = interpretAsTMemFileAndExtract(chunk.memory, chunk.size, tinfo);
942+
if (headers && headers->find("fileSize") == headers->end()) {
943+
(*headers)["fileSize"] = fmt::format("{}", chunk.size);
944+
}
936945
} else if (response_code == 304) {
937946
// this means the object exist but I am not serving
938947
// it since it's already in your possession
@@ -1689,9 +1698,9 @@ void CcdbApi::vectoredLoadFileToMemory(std::vector<RequestContext>& requestConte
16891698
// Save snapshots
16901699
for (int i = 0; i < requestContexts.size(); i++) {
16911700
auto& requestContext = requestContexts.at(i);
1692-
logReading(requestContext.path, requestContext.timestamp, &requestContext.headers,
1693-
fmt::format("{}{}", requestContext.considerSnapshot ? "load to memory" : "retrieve", fromSnapshots.at(i) ? " from snapshot" : ""));
16941701
if (!requestContext.dest.empty()) {
1702+
logReading(requestContext.path, requestContext.timestamp, &requestContext.headers,
1703+
fmt::format("{}{}", requestContext.considerSnapshot ? "load to memory" : "retrieve", fromSnapshots.at(i) ? " from snapshot" : ""));
16951704
if (requestContext.considerSnapshot && fromSnapshots.at(i) != 2) {
16961705
saveSnapshot(requestContext);
16971706
}
@@ -1773,6 +1782,9 @@ void CcdbApi::loadFileToMemory(o2::pmr::vector<char>& dest, const std::string& p
17731782
if ((isSnapshotMode() || mPreferSnapshotCache) && localHeaders->find("ETag") == localHeaders->end()) { // generate dummy ETag to profit from the caching
17741783
(*localHeaders)["ETag"] = path;
17751784
}
1785+
if (localHeaders->find("fileSize") == localHeaders->end()) {
1786+
(*localHeaders)["fileSize"] = fmt::format("{}", memFile.GetEND());
1787+
}
17761788
}
17771789
return;
17781790
}

CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
# Preamble
1313

14-
cmake_minimum_required(VERSION 3.21.1 FATAL_ERROR)
14+
cmake_minimum_required(VERSION 3.27.1 FATAL_ERROR)
1515

1616
# it's important to specify accurately the list of languages. for instance C and
1717
# C++ as we _do_ have some C files to compile explicitely as C (e.g. gl3w.c)
@@ -140,4 +140,3 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
140140
endif()
141141

142142
set_root_pcm_dependencies()
143-

CODEOWNERS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
/DataFormats/Detectors/GlobalTrackingWorkflow @shahor02
3636
/DataFormats/Detectors/HMPID @gvolpe79
3737
/DataFormats/Detectors/ITSMFT @mcoquet642 @mconcas @shahor02
38-
/DataFormats/Detectors/MUON @AliceO2Group/muon-experts
38+
/DataFormats/Detectors/MUON @AliceO2Group/muon-experts @shahor02
3939
/DataFormats/Detectors/PHOS @peressounko @kharlov
4040
/DataFormats/Detectors/Passive @sawenzel @benedikt-voelkel
4141
/DataFormats/Detectors/TOF @noferini
@@ -66,7 +66,7 @@
6666
/Detectors/GlobalTrackingWorkflow @shahor02
6767
/Detectors/HMPID @gvolpe79
6868
/Detectors/ITSMFT @mcoquet642 @mconcas @shahor02
69-
/Detectors/MUON @AliceO2Group/muon-experts
69+
/Detectors/MUON @AliceO2Group/muon-experts @shahor02
7070
/Detectors/PHOS @peressounko @kharlov
7171
/Detectors/Passive @sawenzel @benedikt-voelkel
7272
/Detectors/TOF @noferini

Common/Constants/include/CommonConstants/PhysicsConstants.h

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -67,32 +67,32 @@ enum Pdg {
6767
};
6868

6969
/// \brief Declarations of masses for additional particles
70-
constexpr double MassB0 = 5.27953;
71-
constexpr double MassB0Bar = 5.27953;
72-
constexpr double MassBPlus = 5.27915;
73-
constexpr double MassBS = 5.3663;
74-
constexpr double MassBSBar = 5.3663;
70+
constexpr double MassB0 = 5.27966;
71+
constexpr double MassB0Bar = 5.27966;
72+
constexpr double MassBPlus = 5.27934;
73+
constexpr double MassBS = 5.36692;
74+
constexpr double MassBSBar = 5.36692;
7575
constexpr double MassD0 = 1.86484;
7676
constexpr double MassD0Bar = 1.86484;
77-
constexpr double MassDMinus = 1.86962;
78-
constexpr double MassDPlus = 1.86962;
79-
constexpr double MassDS = 1.9685;
80-
constexpr double MassDSBar = 1.9685;
81-
constexpr double MassDStar = 2.01027;
82-
constexpr double MassChiC1 = 3.51066;
83-
constexpr double MassJPsi = 3.096916;
84-
constexpr double MassLambdaB0 = 5.6202;
77+
constexpr double MassDMinus = 1.86966;
78+
constexpr double MassDPlus = 1.86966;
79+
constexpr double MassDS = 1.96835;
80+
constexpr double MassDSBar = 1.96835;
81+
constexpr double MassDStar = 2.01026;
82+
constexpr double MassChiC1 = 3.51067;
83+
constexpr double MassJPsi = 3.0969;
84+
constexpr double MassLambdaB0 = 5.6196;
8585
constexpr double MassLambdaCPlus = 2.28646;
86-
constexpr double MassOmegaC0 = 2.6975;
87-
constexpr double MassPhi = 1.019455;
88-
constexpr double MassSigmaC0 = 2.45376;
89-
constexpr double MassSigmaCPlusPlus = 2.45402;
86+
constexpr double MassOmegaC0 = 2.6952;
87+
constexpr double MassPhi = 1.019461;
88+
constexpr double MassSigmaC0 = 2.45375;
89+
constexpr double MassSigmaCPlusPlus = 2.45397;
9090
constexpr double MassX3872 = 3.87165;
9191
constexpr double MassXi0 = 1.31486;
92-
constexpr double MassXiB0 = 5.7924;
93-
constexpr double MassXiCCPlusPlus = 3.59798;
94-
constexpr double MassXiCPlus = 2.4679;
95-
constexpr double MassXiC0 = 2.471;
92+
constexpr double MassXiB0 = 5.7919;
93+
constexpr double MassXiCCPlusPlus = 3.62155;
94+
constexpr double MassXiCPlus = 2.46771;
95+
constexpr double MassXiC0 = 2.47044;
9696
constexpr double MassDeuteron = 1.87561294257;
9797
constexpr double MassTriton = 2.80892113298;
9898
constexpr double MassHelium3 = 2.80839160743;
@@ -102,53 +102,53 @@ constexpr double MassHyperHydrogen4 = 3.9226;
102102
constexpr double MassHyperHelium4 = 3.9217;
103103

104104
/// \brief Declarations of masses for particles in ROOT PDG_t
105-
constexpr double MassDown = 0.0048;
106-
constexpr double MassDownBar = 0.0048;
107-
constexpr double MassUp = 0.0024;
108-
constexpr double MassUpBar = 0.0024;
109-
constexpr double MassStrange = 0.104;
110-
constexpr double MassStrangeBar = 0.104;
105+
constexpr double MassDown = 0.00467;
106+
constexpr double MassDownBar = 0.00467;
107+
constexpr double MassUp = 0.00216;
108+
constexpr double MassUpBar = 0.00216;
109+
constexpr double MassStrange = 0.0934;
110+
constexpr double MassStrangeBar = 0.0934;
111111
constexpr double MassCharm = 1.27;
112112
constexpr double MassCharmBar = 1.27;
113-
constexpr double MassBottom = 4.68;
114-
constexpr double MassBottomBar = 4.68;
115-
constexpr double MassTop = 171.2;
116-
constexpr double MassTopBar = 171.2;
113+
constexpr double MassBottom = 4.18;
114+
constexpr double MassBottomBar = 4.18;
115+
constexpr double MassTop = 172.5;
116+
constexpr double MassTopBar = 172.5;
117117
constexpr double MassGluon = 0.0;
118-
constexpr double MassElectron = 0.00051099891;
119-
constexpr double MassPositron = 0.00051099891;
118+
constexpr double MassElectron = 0.000510999;
119+
constexpr double MassPositron = 0.000510999;
120120
constexpr double MassNuE = 0.0;
121121
constexpr double MassNuEBar = 0.0;
122-
constexpr double MassMuonMinus = 0.105658;
123-
constexpr double MassMuonPlus = 0.105658;
122+
constexpr double MassMuonMinus = 0.1056584;
123+
constexpr double MassMuonPlus = 0.1056584;
124124
constexpr double MassNuMu = 0.0;
125125
constexpr double MassNuMuBar = 0.0;
126-
constexpr double MassTauMinus = 1.77684;
127-
constexpr double MassTauPlus = 1.77684;
126+
constexpr double MassTauMinus = 1.77686;
127+
constexpr double MassTauPlus = 1.77686;
128128
constexpr double MassNuTau = 0.0;
129129
constexpr double MassNuTauBar = 0.0;
130130
constexpr double MassGamma = 0.0;
131-
constexpr double MassZ0 = 91.187;
132-
constexpr double MassWPlus = 80.398;
133-
constexpr double MassWMinus = 80.398;
134-
constexpr double MassPi0 = 0.134977;
135-
constexpr double MassK0Long = 0.497614;
136-
constexpr double MassPiPlus = 0.13957;
137-
constexpr double MassPiMinus = 0.13957;
138-
constexpr double MassProton = 0.938272;
139-
constexpr double MassProtonBar = 0.938272;
140-
constexpr double MassNeutron = 0.939565;
141-
constexpr double MassNeutronBar = 0.939565;
142-
constexpr double MassK0Short = 0.497614;
143-
constexpr double MassK0 = 0.497614;
144-
constexpr double MassK0Bar = 0.497614;
131+
constexpr double MassZ0 = 91.1876;
132+
constexpr double MassWPlus = 80.377;
133+
constexpr double MassWMinus = 80.377;
134+
constexpr double MassPi0 = 0.1349768;
135+
constexpr double MassK0Long = 0.497611;
136+
constexpr double MassPiPlus = 0.1395704;
137+
constexpr double MassPiMinus = 0.1395704;
138+
constexpr double MassProton = 0.9382721;
139+
constexpr double MassProtonBar = 0.9382721;
140+
constexpr double MassNeutron = 0.9395654;
141+
constexpr double MassNeutronBar = 0.9395654;
142+
constexpr double MassK0Short = 0.497611;
143+
constexpr double MassK0 = 0.497611;
144+
constexpr double MassK0Bar = 0.497611;
145145
constexpr double MassKPlus = 0.493677;
146146
constexpr double MassKMinus = 0.493677;
147-
constexpr double MassLambda0 = 1.11568;
148-
constexpr double MassLambda0Bar = 1.11568;
149-
constexpr double MassLambda1520 = 1.5195;
150-
constexpr double MassSigmaMinus = 1.19744;
151-
constexpr double MassSigmaBarPlus = 1.19744;
147+
constexpr double MassLambda0 = 1.115683;
148+
constexpr double MassLambda0Bar = 1.115683;
149+
constexpr double MassLambda1520 = 1.519;
150+
constexpr double MassSigmaMinus = 1.197449;
151+
constexpr double MassSigmaBarPlus = 1.197449;
152152
constexpr double MassSigmaPlus = 1.18937;
153153
constexpr double MassSigmaBarMinus = 1.18937;
154154
constexpr double MassSigma0 = 1.192642;

DataFormats/Detectors/CTP/include/DataFormatsCTP/Scalers.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ struct errorCounters {
3333
void printStream(std::ostream& stream) const;
3434
uint32_t lmB = 0, l0B = 0, l1B = 0, lmA = 0, l0A = 0, l1A = 0; // decreasing counters
3535
uint32_t lmBlmA = 0, lmAl0B = 0, l0Bl0A = 0, l0Al1B = 0, l1Bl1A = 0; // between levels countres
36+
uint32_t lmBlmAd1 = 0, lmAl0Bd1 = 0, l0Bl0Ad1 = 0, l0Al1Bd1 = 0, l1Bl1Ad1 = 0; // between levels countres - diff =1 - just warning
3637
uint32_t MAXPRINT = 3;
3738
};
3839
struct CTPScalerRaw {
@@ -115,7 +116,8 @@ class CTPRunScalers
115116
// v1
116117
// static constexpr uint32_t NCOUNTERS = 1070;
117118
// v2 - orbitid added at the end
118-
static constexpr uint32_t NCOUNTERS = 1071;
119+
static constexpr uint32_t NCOUNTERSv2 = 1071;
120+
static constexpr uint32_t NCOUNTERS = 1085;
119121
static std::vector<std::string> scalerNames;
120122

121123
void printLMBRateVsT() const; // prints LMB interaction rate vs time for debugging

0 commit comments

Comments
 (0)