Link to src file:


Marlin processor for the event selection by initial particle using the topological parameters of the event. 

3 Main categories:

  • Muon-like events (muons and punch-through pions)
  • Electron events
  • Hadron events

2 categories for the rejection:

  • Multi-particle/upstream showering events
  • Empty events (number of hits is less than set in the xml-steering)

Model description:

Multi-class Gradient Boosted Decision Tree (GBDT) model is used. Given the event observables model provides 

3 classifiers as an output with probability-like normalisation

Classification observables:

  • Number of hits per event
  • Shower start layer number - found by ShowerStartFindingProcessor
  • Event radius 
  • Center of gravity in z
  • Fraction of energy in first 25 layers
  • Energy fraction in shower center
  • Energy fraction in shower core hits
  • Number of track hits
  • Number of layers with hits from last 5
  • Mean hit energy after shower start


  • HCAL Calorimeter hit collection
  • Std variables collections (hit, layer, event)
  • LightGBM GBDT model in txt format
  • Cluster collection ()


  • Processor writes BDT scores in the LCIO event float parameters
    • Event float parameter names:
      • hadronScore
      • electronScore
      • muLikeScore 
    • Can be read in another Marlin processor using getFloatVal method of LCParameters
    • Can be written in the AHCAL root tree adding to them in the EventParameterWriteEngine_FloatParameters steering section of 
    • Event quality multi-particle flag is written in event integer parameters
      • Event int parameter name: isMultiParticle
  • Useful for Event Display checks:
    • Events of any type can be thrown from Marlin chain according to IDMode parameter

Important steering parameters:

  • PathToLightGBMModel - path to the model txt file trained in LightGBM, default model can be found under:


  • KofFirstAHCALlayer - number of fist AHCAL layer (0 - TBMay2018, 1 - TBJune2018)
  • IDMode: (-)0 - keep all, (-)1 - only hadron events, (-)2 - only muon-like events, (-)3 - only electron events, 4 - only rejected events
    • minus sign stands for GBDT classification
  • ApplyEventFiltering - boolean switch to reject event classified as empty or multi-particle
  • MinNHits - minimum number of hits to reject  "empty" events
  • Event filtering:
    • Minimum number of hits - to reject empty events
    • Number of first layers to calculate cluster spread

Example steering file can be found in calice_steering repository

For TBMay2018:

The classification model is trained on TBJune2018 simulations, however it can be applied to TBMay18 data with slight decrease of performance setting the KofFirstAHCALlayer to 0 (important for shower start observable and event filtering), 

  • No labels