You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/// function reading the hits from a chain (previously initialized with initSimChains
122
122
/// The hits pointer will be initialized (what to we do about ownership??)
@@ -130,12 +130,12 @@ class DigitizationContext
130
130
/// returns the GRP object associated to this context
131
131
o2::parameters::GRPObject const& getGRP() const;
132
132
133
-
// apply collision number cuts and potential relabeling of eventID
134
-
voidapplyMaxCollisionFilter(long startOrbit, long orbitsPerTF, int maxColl);
133
+
// apply collision number cuts and potential relabeling of eventID, (keeps collisions which fall into the orbitsEarly range for the next timeframe)
134
+
// needs a timeframe index structure (determined by calcTimeframeIndices), which is adjusted during the process to reflect the filtering
135
+
voidapplyMaxCollisionFilter(std::vector<std::tuple<int, int, int>>& timeframeindices, long startOrbit, long orbitsPerTF, int maxColl, double orbitsEarly = 0.);
135
136
136
-
/// finalize timeframe structure (fixes the indices in mTimeFrameStartIndex)
137
-
// returns the number of timeframes
138
-
intfinalizeTimeframeStructure(long startOrbit, long orbitsPerTF);
137
+
/// get timeframe structure --> index markers where timeframe starts/ends/is_influenced_by
std::vector<std::pair<int, int>> mTimeFrameStartIndex; // for each timeframe, the pair of start-index and end-index into mEventParts, mEventRecords
188
-
std::vector<std::pair<int, int>> mTimeFrameStartIndexQED; // for each timeframe, the pair of start-index and end-index into mEventParts, mEventRecords (QED version)
189
-
190
186
o2::BunchFilling mBCFilling; // pattern of active BCs
191
187
192
188
std::vector<std::string> mSimPrefixes; // identifiers to the hit sim products; the key corresponds to the source ID of event record
voidDigitizationContext::applyMaxCollisionFilter(long startOrbit, long orbitsPerTF, int maxColl)
464
+
voidDigitizationContext::applyMaxCollisionFilter(std::vector<std::tuple<int, int, int>>& timeframeindices, long startOrbit, long orbitsPerTF, int maxColl, double orbitsEarly)
386
465
{
387
466
// the idea is to go through each timeframe and throw away collisions beyond a certain count
// check if the tree has entries left, if needed, close current tree/file
363
-
if (++mCurrTreeEntry >= mCTFTree->GetEntries()) { // this file is done, check if there are other files
363
+
if (++mCurrTreeEntry >= mCTFTree->GetEntries() || (mInput.maxTFsPerFile > 0 && mCurrTreeEntry >= mInput.maxTFsPerFile)) { // this file is done, check if there are other files
options.push_back(ConfigParamSpec{"onlyDet", VariantType::String, std::string{DetID::ALL}, {"comma-separated list of detectors to accept. Overrides skipDet"}});
56
56
options.push_back(ConfigParamSpec{"skipDet", VariantType::String, std::string{DetID::NONE}, {"comma-separate list of detectors to skip"}});
57
57
options.push_back(ConfigParamSpec{"max-tf", VariantType::Int, -1, {"max CTFs to process (<= 0 : infinite)"}});
58
+
options.push_back(ConfigParamSpec{"max-tf-per-file", VariantType::Int, -1, {"max TFs to process per ctf file (<= 0 : infinite)"}});
58
59
options.push_back(ConfigParamSpec{"loop", VariantType::Int, 0, {"loop N times (infinite for N<0)"}});
59
60
options.push_back(ConfigParamSpec{"delay", VariantType::Float, 0.f, {"delay in seconds between consecutive TFs sending"}});
60
61
options.push_back(ConfigParamSpec{"copy-cmd", VariantType::String, "alien_cp ?src file://?dst", {"copy command for remote files or no-copy to avoid copying"}}); // Use "XrdSecPROTOCOL=sss,unix xrdcp -N root://eosaliceo2.cern.ch/?src ?dst" for direct EOS access
0 commit comments