RowCutApplicationProcessor
This processor is used to select in a hit collection those hits that are not formed by pulses contained in a custom set of rows or modules This processor is meant to be used in the reconstruction chain of data from row based readout
Processor parameters
InputCollectionName: A collection of TrackerHit containing the uncut data sample. Default: TPCHits
OutputCollectionName: A collection of TrackerHit where the output is going to be stored. Default: TPCHitsCut
SetOutputTransient (Optional): if true the output will not be stored to disk. Default: false
SkipRow: A pair of integers, separated by spaces identifying the module and row to select. A negative number indicates any row and/or any module. For example -1 -1 signals to remove all rows from all modules The user can use this parameter an arbitrary number of times in each processor. Default: -1 -1
- isSubset: Is a boolean to specify whether the output collection is to be a subset of the input (only pointers to the original data are stored). If this value is false the algorithm assumes only the flagging mechanism and no output collection will created
ActivateFlagging: Is a boolean specifying whether to activate the flagging mechanism. If this parameter is set to be true the original input collection will be modified adding a flag of type RemoveFromTrackFinding which should be interpreted by the following processor accordingly. WARNING: Setting this parameter to be true WILL MODIFY THE INPUT COLLECTION
Developer information
The processor is derived from the EventModifier abstract class to be able to change the quality flag of the input hits when the ActivateFlagging parameter is set to be true. For such a reason the workhorse of this processor is the modifyEvent(EVENT::LCEvent* evt) method.
The modifyEvent(EVENT::LCEvent* evt) is basically a loop which checks if a hit is to be selected or flagged. If the user required the Subset option the output collection will be created and filled with all the hits that are not created using the modules and row listed by the user. If the user requires the flagging the processor will flag as not to be included in the track finding all those hits that were created using the list of modules and rows set by the user
To check whether a hit was created with pulses from a specific row, the processor will check the hit row data, retrieve the first pulse contained in that vector and queries GEAR for the row and module information. For performance reasons the processor will check only the first pulse in the hit raw data vector.
For a developement decision, when the isSubset parameter is set to be false, the processor will create NO OUTPUT COLLECTION. This is not a bug: the subset collection is the correct way, within LCIO, to store a copy of unmodified original data. If the isSubset parameter is set to false the developer assumes that the user only wants to flag the original set of hits.
For performance reasons, in case the user requires all the hit and rows of any module to be flagged and/or deselected using the <-1, -1> pair, which is the default behaviour when the user do not specify any value for the SkipRow parameter, the processor will simply loop over all the hits flagging them if such behaviour is required, otherwise skipping all the remaining part of the code, without requiring the GEAR information relative to the Hit.
Authors
- Martin Ljunggren (Lund University)
- Stefano Caiazza (DESY)
Documentation update as of revision 3010