The DigitListModule::Reco step calls an AlgDigitList method to create the initial CandDigitList of CandDigit objects, which is then given for "adoption" to the CandRecord, held in "mom" for persistency management and output to the Cand I/O stream.
The FilterDigitListModule::Reco step calls a user-selectible Algorithm, such as AlgFilterDigitSR (from the FilterDigitSR package) to identify and prune unwanted (e.g., out-of--time) CandDigits from a copy of the original CandDigitList produced by the DigitListModule::Reco step. It can then replace the original CandDigitList in the CandRecord with the filtered CandDigitList, or add the filtered CandDigitList to the CandRecord, based on a FilterDigitListModule configuration parameter.
The DeMuxDigitListModule::Reco step calls a user-selectible Algorithm, such as AlgDeMuxCosmics (from the DeMux package) or AlgAltDeMuxCosmics (from the AltDeMux package). These Algorithms set the PlexSEIdAltL demultiplexing hypothesis weights in each CandDigit. The new CandDigitList, containing the modified PlexSEIdAltL information, can be chosen to replace or add to the original CandDigitList in the CandRecord, as with the filtered CandDigitList discussed above. Again this decision is based on a DeMuxDigitListModule configuration parameter.
gSystem->Load("libDeMux");
or:-
gSystem->Load("libAltDeMux");
jc.Path.Create("Reco",
...
"DeMuxDigitListModule::Reco "
...
The official Algorithms are supposed to come pre-configured. To see how the default configurations are defined, to discover the values of parameters in the pre-configured AlgConfig sets, or to create your own full AlgConfig sets, see here.
If you wish to simply change parameters in a pre-defined configuration, you need to add lines like this to your Job script. You specify the AlgConfig set with two identifiers: the Algorithm class name (e.g., AlgDeMuxDigitList) and the configuration name for a specific AlgDeMuxDigitList configuration set. This is usually, but not necessarily, the string "default".
AlgFactory &af = AlgFactory::GetInstance();
AlgHandle ah = af.GetAlgHandle("AlgDeMuxDigitList", "default");
AlgConfig &acd = ah.GetAlgConfig();
acd.UnLockValues();
acd.Set("DeMuxAlgorithm", "AlgDeMuxBeam"); //Configure DeMuxer for beam data.
acd.Set("DeMuxAlgConfig", "default");
acd.Set("NormalizeWeights", 1); // Normalize weights to 1 if non-zero
acd.Set("TrimHyps", 1); // Drop "0" weights if neg., or keep top N
acd.LockValues();
The Algorithm choices from DeMux are:-