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
Developments to allow treatment/inclusion of additional orbits
before each timeframe start:
- A new option `--earlyOrbits x` will prepend x orbits with collisions
before the firstOrbit asked
- It will also do the same in each individual timeframe collision context extracted
from the global context
- Collisions falling within the 'earlyOrbit' range are always kept and not
filtered out based on a maximal count filter
Some cleanup.
Some restructuring/simplification of DigitizationContext:
- less internal state
- timeframe boundary indices are generalized from (start, end) --> (start, end, previous)
where previous is the index from which on this timeframe can still be influenced with
an earlyOrbit criterion
(cherry picked from commit 9fa6915)
/// function reading the hits from a chain (previously initialized with initSimChains
119
119
/// The hits pointer will be initialized (what to we do about ownership??)
@@ -127,12 +127,12 @@ class DigitizationContext
127
127
/// returns the GRP object associated to this context
128
128
o2::parameters::GRPObject const& getGRP() const;
129
129
130
-
// apply collision number cuts and potential relabeling of eventID
131
-
voidapplyMaxCollisionFilter(long startOrbit, long orbitsPerTF, int maxColl);
130
+
// apply collision number cuts and potential relabeling of eventID, (keeps collisions which fall into the orbitsEarly range for the next timeframe)
131
+
// needs a timeframe index structure (determined by calcTimeframeIndices), which is adjusted during the process to reflect the filtering
132
+
voidapplyMaxCollisionFilter(std::vector<std::tuple<int, int, int>>& timeframeindices, long startOrbit, long orbitsPerTF, int maxColl, double orbitsEarly = 0.);
132
133
133
-
/// finalize timeframe structure (fixes the indices in mTimeFrameStartIndex)
134
-
// returns the number of timeframes
135
-
intfinalizeTimeframeStructure(long startOrbit, long orbitsPerTF);
134
+
/// 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
182
-
std::vector<std::pair<int, int>> mTimeFrameStartIndexQED; // for each timeframe, the pair of start-index and end-index into mEventParts, mEventRecords (QED version)
183
-
184
180
o2::BunchFilling mBCFilling; // pattern of active BCs
185
181
186
182
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)
443
+
voidDigitizationContext::applyMaxCollisionFilter(std::vector<std::tuple<int, int, int>>& timeframeindices, long startOrbit, long orbitsPerTF, int maxColl, double orbitsEarly)
386
444
{
387
445
// the idea is to go through each timeframe and throw away collisions beyond a certain count
0 commit comments