Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-09-28 07:03:12

0001 ######################################################################################################################
0002 # EIC detector model
0003 # based on parameters from EIC detector matrix from EIC yellow report https://physdiv.jlab.org/DetectorMatrix/ (also in https://arxiv.org/abs/2103.05419).
0004 # as well as on assumptions on calorimeter granularity, and efficiency.
0005 # email: miguel.arratia@ucr.edu, ssekula@smu.edu
0006 #######################################################################################################################
0007 
0008 
0009 #######################################
0010 # Load any external configurations
0011 #######################################
0012 
0013 #source customizations.tcl
0014 
0015 
0016 #######################################
0017 # Order of execution of various modules
0018 #######################################
0019 
0020 set ExecutionPath {
0021   ParticlePropagator
0022 
0023   ChargedHadronTrackingEfficiency
0024   ElectronTrackingEfficiency
0025 
0026 
0027   ChargedHadronSmearing
0028   ElectronSmearing
0029 
0030   TrackMerger
0031 
0032   ECal
0033   HCal
0034 
0035   Calorimeter
0036   EFlowMerger
0037   EFlowFilter
0038 
0039   PhotonEfficiency
0040   PhotonIsolation
0041 
0042   ElectronFilter
0043   ElectronEfficiency
0044   ElectronIsolation
0045 
0046   ChargedHadronFilter
0047   MissingET
0048 
0049   NeutrinoFilter
0050   GenJetFinder
0051   GenMissingET
0052 
0053   FastJetFinder
0054 
0055   JetEnergyScale
0056 
0057   JetFlavorAssociation
0058   GenJetFlavorAssociation
0059 
0060   UniqueObjectFinder
0061 
0062   ScalarHT
0063 
0064   TrackCountingBTagging
0065 
0066   PIDSystems
0067 
0068   TreeWriter
0069 }
0070 
0071 #################################
0072 # Propagate particles in cylinder
0073 #################################
0074 
0075 module ParticlePropagator ParticlePropagator {
0076     set InputArray Delphes/stableParticles
0077     set OutputArray stableParticles
0078     set ChargedHadronOutputArray chargedHadrons
0079     set ElectronOutputArray electrons
0080 
0081     # radius of the magnetic field coverage, in m
0082     set Radius 1.5
0083     # half-length of the magnetic field coverage, in m
0084     set HalfLength 1.20
0085     # magnetic field
0086     set Bz 3.0
0087 }
0088 
0089 
0090 ####################################
0091 # Common Tracking Efficiency Model
0092 ####################################
0093 #Dummy efficiency (100%). Leaving structure to show how tracking dependent on pt and eta can be incorporated)
0094 #
0095 
0096 #Minimum pT for B = 3 T:
0097 #150 MeV/c for -3.0 < eta < -2.5
0098 #220 MeV/c for -2.5 < eta < -2.0
0099 #160 MeV/c for -2.0 < eta < -1.5
0100 #300 MeV/c for -1.5 < eta < -1.0
0101 #(For B = 3T: minimum pT = 400 MeV/c with 90% acceptance (similar for pi and K))
0102 
0103 set CommonTrackingEfficiency {
0104 
0105     (abs(eta) <= 1.0) * (pt > 0.400)                     * (1.0) +
0106     (abs(eta) > 1.0 && abs(eta) <= 1.5) * (pt > 0.300)   * (1.0) +
0107     (abs(eta) > 1.5 && abs(eta) <= 2.0) * (pt > 0.160)   * (1.0) +
0108     (abs(eta) > 2.0 && abs(eta) <= 2.5) * (pt > 0.220)   * (1.0) +
0109     (abs(eta) > 2.5 && abs(eta) <= 3.5) * (pt > 0.150)   * (1.0) +
0110     (abs(eta) > 3.5)                                                  * (0.00)+
0111     0.0
0112 }
0113 
0114 set CommonTrackingResolution {
0115     (abs(eta) <= 1.0)                        * sqrt((5e-3)^2 + (pt*cosh(eta))^2*(2e-4)^2) +
0116     (abs(eta) > 1.0 && abs(eta) <= 2.5)      * sqrt((1e-2)^2 + (pt*cosh(eta))^2*(2e-4)^2) +
0117     (abs(eta) > 2.5 && abs(eta) <= 3.5)      * sqrt((2e-2)^2 + (pt*cosh(eta))^2*(1e-3)^2) +
0118     (abs(eta) > 3.5)                                                  * (0.00)
0119 }
0120 
0121 
0122 ####################################
0123 # Charged hadron tracking efficiency
0124 ####################################
0125 
0126 module Efficiency ChargedHadronTrackingEfficiency {
0127   set InputArray ParticlePropagator/chargedHadrons
0128   set OutputArray chargedHadrons
0129   set EfficiencyFormula $CommonTrackingEfficiency
0130 }
0131 
0132 ##############################
0133 # Electron tracking efficiency
0134 ##############################
0135 
0136 module Efficiency ElectronTrackingEfficiency {
0137   set InputArray ParticlePropagator/electrons
0138   set OutputArray electrons
0139   set EfficiencyFormula $CommonTrackingEfficiency
0140 
0141 }
0142 
0143 
0144 
0145 ########################################
0146 # Smearing for charged hadrons
0147 ########################################
0148 
0149 module TrackSmearing ChargedHadronSmearing {
0150   set InputArray ChargedHadronTrackingEfficiency/chargedHadrons
0151   set BeamSpotInputArray BeamSpotFilter/beamSpotParticle
0152   set OutputArray chargedHadrons
0153 #  set ApplyToPileUp true
0154   # magnetic field
0155   set Bz 3.0
0156   set PResolutionFormula $CommonTrackingResolution
0157   set CtgThetaResolutionFormula { 0.0 }
0158   set PhiResolutionFormula { 0.0 }
0159 
0160 # Updated Berkeley all-silicon tracker for 3.0T field. Provided by Rey Cruz-Torres on 6/29/2021
0161   set D0ResolutionFormula "
0162     (abs(eta)<=0.5)                   * (sqrt( (0.0045)^2 +   (0.028/(pt*cosh(eta)))^2   ) )  +
0163     (abs(eta)<=1.0 && abs(eta)>0.5)   * (sqrt( (0.0044)^2 +   (0.036/(pt*cosh(eta)))^2   ) )  +
0164     (abs(eta)<=1.5 && abs(eta)>1.0)   * (sqrt( (0.0061)^2 +   (0.062/(pt*cosh(eta)))^2   ) )  +
0165     (abs(eta)<=2.0 && abs(eta)>1.5)   * (sqrt( (0.0086)^2 +   (0.108/(pt*cosh(eta)))^2   ) )  +
0166     (abs(eta)<=2.5 && abs(eta)>2.0)   * (sqrt( (0.0092)^2 +   (0.222/(pt*cosh(eta)))^2   ) )  +
0167     (abs(eta)<=3.0 && abs(eta)>2.5)   * (sqrt( (0.0093)^2 +   (0.423/(pt*cosh(eta)))^2   ) )  +
0168     (abs(eta)<=3.5 && abs(eta)>3.0)   * (sqrt( (0.0310)^2 +   (0.831/(pt*cosh(eta)))^2   ) )  +
0169     (abs(eta)<=4.0 && abs(eta)>3.5)   * (sqrt( (0.0810)^2 +   (1.434/(pt*cosh(eta)))^2   ) )
0170   "
0171 
0172 
0173   set DZResolutionFormula "
0174     (abs(eta)<=0.5)                   * (sqrt( (0.0033)^2 +   (0.027/(pt*cosh(eta)))^2   ) )  +
0175     (abs(eta)<=1.0 && abs(eta)>0.5)   * (sqrt( (0.0044)^2 +   (0.043/(pt*cosh(eta)))^2   ) )  +
0176     (abs(eta)<=1.5 && abs(eta)>1.0)   * (sqrt( (0.0071)^2 +   (0.099/(pt*cosh(eta)))^2   ) )  +
0177     (abs(eta)<=2.0 && abs(eta)>1.5)   * (sqrt( (0.0130)^2 +   (0.290/(pt*cosh(eta)))^2   ) )  +
0178     (abs(eta)<=2.5 && abs(eta)>2.0)   * (sqrt( (0.0300)^2 +   (0.923/(pt*cosh(eta)))^2   ) )  +
0179     (abs(eta)<=3.0 && abs(eta)>2.5)   * (sqrt( (0.0330)^2 +   (2.581/(pt*cosh(eta)))^2   ) )  +
0180     (abs(eta)<=3.5 && abs(eta)>3.0)   * (sqrt( (0.1890)^2 +   (8.349/(pt*cosh(eta)))^2   ) )  +
0181     (abs(eta)<=4.0 && abs(eta)>3.5)   * (sqrt( (0.0011)^2 +   (21.430/(pt*cosh(eta)))^2   ) )
0182   "
0183 
0184 
0185 }
0186 
0187 ###################################
0188 # Smearing for electrons
0189 ###################################
0190 
0191 
0192 module TrackSmearing ElectronSmearing {
0193   set InputArray ElectronTrackingEfficiency/electrons
0194   set BeamSpotInputArray BeamSpotFilter/beamSpotParticle
0195   set OutputArray electrons
0196 #  set ApplyToPileUp true
0197   # magnetic field
0198   set Bz 3.0
0199   set PResolutionFormula $CommonTrackingResolution
0200   set CtgThetaResolutionFormula { 0.0 }
0201   set PhiResolutionFormula { 0.0 }
0202 
0203 # Updated Berkeley all-silicon tracker for 3.0T field. Provided by Rey Cruz-Torres on 6/29/2021
0204   set D0ResolutionFormula "
0205     (abs(eta)<=0.5)                   * (sqrt( (0.0045)^2 +   (0.028/(pt*cosh(eta)))^2   ) )  +
0206     (abs(eta)<=1.0 && abs(eta)>0.5)   * (sqrt( (0.0044)^2 +   (0.036/(pt*cosh(eta)))^2   ) )  +
0207     (abs(eta)<=1.5 && abs(eta)>1.0)   * (sqrt( (0.0061)^2 +   (0.062/(pt*cosh(eta)))^2   ) )  +
0208     (abs(eta)<=2.0 && abs(eta)>1.5)   * (sqrt( (0.0086)^2 +   (0.108/(pt*cosh(eta)))^2   ) )  +
0209     (abs(eta)<=2.5 && abs(eta)>2.0)   * (sqrt( (0.0092)^2 +   (0.222/(pt*cosh(eta)))^2   ) )  +
0210     (abs(eta)<=3.0 && abs(eta)>2.5)   * (sqrt( (0.0093)^2 +   (0.423/(pt*cosh(eta)))^2   ) )  +
0211     (abs(eta)<=3.5 && abs(eta)>3.0)   * (sqrt( (0.0310)^2 +   (0.831/(pt*cosh(eta)))^2   ) )  +
0212     (abs(eta)<=4.0 && abs(eta)>3.5)   * (sqrt( (0.0810)^2 +   (1.434/(pt*cosh(eta)))^2   ) )
0213   "
0214 
0215 
0216   set DZResolutionFormula "
0217     (abs(eta)<=0.5)                   * (sqrt( (0.0033)^2 +   (0.027/(pt*cosh(eta)))^2   ) )  +
0218     (abs(eta)<=1.0 && abs(eta)>0.5)   * (sqrt( (0.0044)^2 +   (0.043/(pt*cosh(eta)))^2   ) )  +
0219     (abs(eta)<=1.5 && abs(eta)>1.0)   * (sqrt( (0.0071)^2 +   (0.099/(pt*cosh(eta)))^2   ) )  +
0220     (abs(eta)<=2.0 && abs(eta)>1.5)   * (sqrt( (0.0130)^2 +   (0.290/(pt*cosh(eta)))^2   ) )  +
0221     (abs(eta)<=2.5 && abs(eta)>2.0)   * (sqrt( (0.0300)^2 +   (0.923/(pt*cosh(eta)))^2   ) )  +
0222     (abs(eta)<=3.0 && abs(eta)>2.5)   * (sqrt( (0.0330)^2 +   (2.581/(pt*cosh(eta)))^2   ) )  +
0223     (abs(eta)<=3.5 && abs(eta)>3.0)   * (sqrt( (0.1890)^2 +   (8.349/(pt*cosh(eta)))^2   ) )  +
0224     (abs(eta)<=4.0 && abs(eta)>3.5)   * (sqrt( (0.0011)^2 +   (21.430/(pt*cosh(eta)))^2   ) )
0225   "
0226 
0227 
0228 }
0229 
0230 ##############
0231 # Track merger
0232 ##############
0233 
0234 module Merger TrackMerger {
0235 # add InputArray InputArray
0236   add InputArray ChargedHadronSmearing/chargedHadrons
0237   add InputArray ElectronSmearing/electrons
0238   set OutputArray tracks
0239 }
0240 
0241 
0242 #############
0243 #   ECAL
0244 #############
0245 
0246 module SimpleCalorimeter ECal {
0247   set ParticleInputArray ParticlePropagator/stableParticles
0248   set TrackInputArray TrackMerger/tracks
0249 
0250   set TowerOutputArray ecalTowers
0251   set EFlowTrackOutputArray eflowTracks
0252   set EFlowTowerOutputArray eflowPhotons
0253 
0254   set IsEcal true
0255   set EnergyMin 0.050
0256   #does not seem possible to set minimum dependent on eta as spec in the YR.
0257 
0258 
0259   set EnergySignificanceMin 1.0
0260 
0261   set SmearTowerCenter true
0262 
0263   set pi [expr {acos(-1)}]
0264 
0265   # lists of the edges of each tower in eta and phi
0266   # each list starts with the lower edge of the first tower
0267   # the list ends with the higher edged of the last tower
0268 
0269   # Granularity is not discussed in EIC detector handbook.
0270   ##BARREL
0271   #assume 0.1 x 0.1 (real cell size will be smaller, so this is to represent some cluster)
0272 
0273     set PhiBins {}
0274     for {set i -30} {$i <=30} {incr i} {
0275         add PhiBins [expr {$i * $pi/30.0}]
0276     }
0277     for {set i -10} {$i <=10} {incr i} {
0278         set eta [expr {$i * 0.1}]
0279         add EtaPhiBins $eta $PhiBins
0280     }
0281 
0282     ## Coverage is -3.5, -1.0 , and +1.0 to 3.5.
0283    ## assume 0.1 x 0.1 (real cell size will be smaller, so this is to represent some cluster)
0284     set PhiBins {}
0285     for {set i -30} {$i <=30} {incr i} {
0286         add PhiBins [expr {$i * $pi/30.0}]
0287     }
0288 
0289     for {set i 1} {$i <=26} {incr i} {
0290         set eta [expr {-3.6 + $i*0.1}]
0291         add EtaPhiBins $eta $PhiBins
0292     }
0293     for {set i 1} {$i <=26} {incr i} {
0294         set eta [expr {0.9 + $i*0.1 }]
0295         add EtaPhiBins $eta $PhiBins
0296     }
0297 
0298 
0299   add EnergyFraction {0} {0.0}
0300   # energy fractions for e, gamma and pi0
0301   add EnergyFraction {11} {1.0}
0302   add EnergyFraction {22} {1.0}
0303   add EnergyFraction {111} {1.0}
0304   # energy fractions for muon, neutrinos and neutralinos
0305   add EnergyFraction {12} {0.0}
0306   add EnergyFraction {13} {0.0}
0307   add EnergyFraction {14} {0.0}
0308   add EnergyFraction {16} {0.0}
0309   add EnergyFraction {1000022} {0.0}
0310   add EnergyFraction {1000023} {0.0}
0311   add EnergyFraction {1000025} {0.0}
0312   add EnergyFraction {1000035} {0.0}
0313   add EnergyFraction {1000045} {0.0}
0314   # energy fractions for K0short and Lambda
0315  # add EnergyFraction {310} {0.3}
0316  # add EnergyFraction {3122} {0.3}
0317 
0318   set ResolutionFormula {          (eta <= -2.0 && eta>-3.5)                          * sqrt(energy^2*0.01^2 + energy*0.025^2 + 0.01^2)+ \
0319                                    (eta <= -1.0 && eta>-2.0 )                         * sqrt(energy^2*0.02^2 + energy*0.08^2 + 0.02^2 )+ \
0320                                    (eta <= 1.0  && eta> -1.0 )                        * sqrt(energy^2*0.03^2 + energy*0.14^2 + 0.02^2 )+ \
0321                                    (eta <= 3.5  &&  eta>1.0 )                         * sqrt(energy^2*0.02^2 + energy*0.12^2 + 0.02^2)}
0322 
0323 }
0324 
0325 
0326 #############
0327 #   HCAL
0328 #############
0329 
0330 module SimpleCalorimeter HCal {
0331   set ParticleInputArray ParticlePropagator/stableParticles
0332   set TrackInputArray ECal/eflowTracks
0333 
0334   set TowerOutputArray hcalTowers
0335   set EFlowTrackOutputArray eflowTracks
0336   set EFlowTowerOutputArray eflowNeutralHadrons
0337 
0338   set IsEcal false
0339 
0340   ##Assumes noise 100 MeV per tower.
0341   set EnergyMin 0.5
0342   set EnergySignificanceMin 1.0
0343 
0344   set SmearTowerCenter true
0345 
0346   set pi [expr {acos(-1)}]
0347 
0348     set PhiBins {}
0349     for {set i -30} {$i <=30} {incr i} {
0350         add PhiBins [expr {$i * $pi/30.0}]
0351     }
0352     for {set i -10} {$i <=10} {incr i} {
0353         set eta [expr {$i * 0.1}]
0354         add EtaPhiBins $eta $PhiBins
0355     }
0356 
0357     for {set i -30} {$i <=30} {incr i} {
0358         add PhiBins [expr {$i * $pi/30.0}]
0359     }
0360 
0361     for {set i 1} {$i <=26} {incr i} {
0362         set eta [expr {-3.6 + $i*0.1 }]
0363         add EtaPhiBins $eta $PhiBins
0364     }
0365     for {set i 1} {$i <=26} {incr i} {
0366         set eta [expr {0.9 + $i*0.1 }]
0367         add EtaPhiBins $eta $PhiBins
0368     }
0369 
0370 
0371   add EnergyFraction {0} {1.0}
0372   # energy fractions for e, gamma and pi0
0373   add EnergyFraction {11} {0.0}
0374   add EnergyFraction {22} {0.0}
0375   add EnergyFraction {111} {0.0}
0376   # energy fractions for muon, neutrinos and neutralinos
0377   add EnergyFraction {12} {0.0}
0378   add EnergyFraction {13} {0.0}
0379   add EnergyFraction {14} {0.0}
0380   add EnergyFraction {16} {0.0}
0381   add EnergyFraction {1000022} {0.0}
0382   add EnergyFraction {1000023} {0.0}
0383   add EnergyFraction {1000025} {0.0}
0384   add EnergyFraction {1000035} {0.0}
0385   add EnergyFraction {1000045} {0.0}
0386   # energy fractions for K0short and Lambda
0387   #add EnergyFraction {310} {0.7}
0388   #add EnergyFraction {3122} {0.7}
0389 
0390   # set HCalResolutionFormula {resolution formula as a function of eta and energy}
0391   set ResolutionFormula {    (eta <= -1.0 && eta>-3.5)                       * sqrt(energy^2*0.10^2 + energy*0.50^2)+
0392                              (eta <= 1.0 && eta>-1.0 )                       * sqrt(energy^2*0.10^2 + energy*1.00^2)+
0393                              (eta <= 3.5 && eta>1.0 )                       * sqrt(energy^2*0.10^2 + energy*0.50^2)
0394   }
0395 
0396 }
0397 
0398 
0399 #################
0400 # Electron filter
0401 #################
0402 
0403 module PdgCodeFilter ElectronFilter {
0404   set InputArray HCal/eflowTracks
0405   set OutputArray electrons
0406   set Invert true
0407   add PdgCode {11}
0408   add PdgCode {-11}
0409 }
0410 
0411 ######################
0412 # ChargedHadronFilter
0413 ######################
0414 
0415 module PdgCodeFilter ChargedHadronFilter {
0416   set InputArray HCal/eflowTracks
0417   set OutputArray chargedHadrons
0418 
0419   add PdgCode {11}
0420   add PdgCode {-11}
0421   add PdgCode {13}
0422   add PdgCode {-13}
0423 }
0424 
0425 
0426 ###################################################
0427 # Tower Merger (in case not using e-flow algorithm)
0428 ###################################################
0429 
0430 module Merger Calorimeter {
0431 # add InputArray InputArray
0432   add InputArray ECal/ecalTowers
0433   add InputArray HCal/hcalTowers
0434   set OutputArray towers
0435 }
0436 
0437 
0438 
0439 ####################
0440 # Energy flow merger
0441 ####################
0442 
0443 module Merger EFlowMerger {
0444 # add InputArray InputArray
0445   add InputArray HCal/eflowTracks
0446   add InputArray ECal/eflowPhotons
0447   add InputArray HCal/eflowNeutralHadrons
0448   set OutputArray eflow
0449 }
0450 
0451 ######################
0452 # EFlowFilter
0453 ######################
0454 
0455 module PdgCodeFilter EFlowFilter {
0456   set InputArray EFlowMerger/eflow
0457   set OutputArray eflow
0458 
0459   add PdgCode {11}
0460   add PdgCode {-11}
0461   add PdgCode {13}
0462   add PdgCode {-13}
0463 }
0464 
0465 
0466 ###################
0467 # Photon efficiency
0468 ###################
0469 
0470 module Efficiency PhotonEfficiency {
0471   set InputArray ECal/eflowPhotons
0472   set OutputArray photons
0473 
0474   # set EfficiencyFormula {efficiency formula as a function of eta and pt}
0475 
0476   # efficiency formula for photons
0477     set EfficiencyFormula { 1}
0478 }
0479 
0480 ##################
0481 # Photon isolation
0482 ##################
0483 
0484 module Isolation PhotonIsolation {
0485   set CandidateInputArray PhotonEfficiency/photons
0486   set IsolationInputArray EFlowFilter/eflow
0487 
0488   set OutputArray photons
0489 
0490   set DeltaRMax 0.5
0491 
0492   set PTMin 0.5
0493 
0494   set PTRatioMax 0.12
0495 }
0496 
0497 
0498 #####################
0499 # Electron efficiency
0500 #####################
0501 
0502 module Efficiency ElectronEfficiency {
0503   set InputArray ElectronFilter/electrons
0504   set OutputArray electrons
0505 
0506   # set EfficiencyFormula {efficiency formula as a function of eta and pt}
0507 
0508   # efficiency formula for electrons
0509     set EfficiencyFormula {1}
0510 }
0511 
0512 ####################
0513 # Electron isolation
0514 ####################
0515 
0516 module Isolation ElectronIsolation {
0517   set CandidateInputArray ElectronEfficiency/electrons
0518   set IsolationInputArray EFlowFilter/eflow
0519 
0520   set OutputArray electrons
0521 
0522   set DeltaRMax 0.5
0523 
0524   set PTMin 0.5
0525 
0526   set PTRatioMax 0.12
0527 }
0528 
0529 ###################
0530 # Missing ET merger
0531 ###################
0532 
0533 module Merger MissingET {
0534 # add InputArray InputArray
0535   add InputArray EFlowMerger/eflow
0536   set MomentumOutputArray momentum
0537 }
0538 
0539 ##################
0540 # Scalar HT merger
0541 ##################
0542 
0543 module Merger ScalarHT {
0544 # add InputArray InputArray
0545   add InputArray UniqueObjectFinder/jets
0546   add InputArray UniqueObjectFinder/electrons
0547   add InputArray UniqueObjectFinder/photons
0548 
0549   set EnergyOutputArray energy
0550 }
0551 
0552 
0553 #####################
0554 # Neutrino Filter
0555 #####################
0556 
0557 module PdgCodeFilter NeutrinoFilter {
0558 
0559   set InputArray Delphes/stableParticles
0560   set OutputArray filteredParticles
0561 
0562   set PTMin 0.0
0563 
0564   add PdgCode {12}
0565   add PdgCode {14}
0566   add PdgCode {16}
0567   add PdgCode {-12}
0568   add PdgCode {-14}
0569   add PdgCode {-16}
0570 
0571 }
0572 
0573 
0574 #####################
0575 # MC truth jet finder
0576 #####################
0577 
0578 module FastJetFinder GenJetFinder {
0579   set InputArray NeutrinoFilter/filteredParticles
0580 
0581   set OutputArray jets
0582 
0583   # algorithm: 1 CDFJetClu, 2 MidPoint, 3 SIScone, 4 kt, 5 Cambridge/Aachen, 6 antikt
0584   set JetAlgorithm 6
0585   set ParameterR 1.0
0586 
0587   set JetPTMin 3.0
0588 }
0589 
0590 #########################
0591 # Gen Missing ET merger
0592 ########################
0593 
0594 module Merger GenMissingET {
0595 # add InputArray InputArray
0596   add InputArray NeutrinoFilter/filteredParticles
0597   set MomentumOutputArray momentum
0598 }
0599 
0600 
0601 
0602 ############
0603 # Jet finder
0604 ############
0605 
0606 module FastJetFinder FastJetFinder {
0607 #  set InputArray Calorimeter/towers
0608   set InputArray EFlowMerger/eflow
0609 
0610   set OutputArray jets
0611 
0612   # algorithm: 1 CDFJetClu, 2 MidPoint, 3 SIScone, 4 kt, 5 Cambridge/Aachen, 6 antikt
0613   set JetAlgorithm 6
0614   set ParameterR 1.0
0615 
0616   set ComputeNsubjettiness 1
0617   set Beta 1.0
0618   set AxisMode 4
0619 
0620   set ComputeTrimming 1
0621   set RTrim 0.4
0622   set PtFracTrim 0.20
0623   #set PtFracTrim 0.05
0624 
0625   set ComputePruning 1
0626   set ZcutPrun 0.1
0627   set RcutPrun 0.5
0628   set RPrun 0.8
0629 
0630   set ComputeSoftDrop 1
0631   set BetaSoftDrop 0.0
0632   set SymmetryCutSoftDrop 0.1
0633   set R0SoftDrop 0.8
0634 
0635   set JetPTMin 3.0}
0636 
0637 
0638 
0639 
0640 
0641 ##################
0642 # Jet Energy Scale
0643 ##################
0644 
0645 module EnergyScale JetEnergyScale {
0646   set InputArray FastJetFinder/jets
0647   set OutputArray jets
0648 
0649   # scale formula for jets (do not apply it)
0650   set ScaleFormula {1.0}
0651 }
0652 
0653 ########################
0654 # Jet Flavor Association
0655 ########################
0656 
0657 module JetFlavorAssociation JetFlavorAssociation {
0658 
0659   set PartonInputArray Delphes/partons
0660   set ParticleInputArray Delphes/allParticles
0661   set ParticleLHEFInputArray Delphes/allParticlesLHEF
0662   set JetInputArray JetEnergyScale/jets
0663 
0664   set DeltaR 0.5
0665   set PartonPTMin 4.0
0666   set PartonEtaMax 4.0
0667 
0668 }
0669 
0670 module JetFlavorAssociation GenJetFlavorAssociation {
0671 
0672   set PartonInputArray Delphes/partons
0673   set ParticleInputArray Delphes/allParticles
0674   set ParticleLHEFInputArray Delphes/allParticlesLHEF
0675   set JetInputArray GenJetFinder/jets
0676 
0677   set DeltaR 0.5
0678   set PartonPTMin 1.0
0679   set PartonEtaMax 4.0
0680 
0681 }
0682 
0683 
0684 
0685 #####################################################
0686 # Find uniquely identified photons/electrons/tau/jets
0687 #####################################################
0688 
0689 module UniqueObjectFinder UniqueObjectFinder {
0690 # earlier arrays take precedence over later ones
0691 # add InputArray InputArray OutputArray
0692   add InputArray PhotonIsolation/photons photons
0693   add InputArray ElectronIsolation/electrons electrons
0694   add InputArray JetEnergyScale/jets jets
0695 }
0696 
0697 ############################
0698 # b-tagging (track counting)
0699 ############################
0700 
0701 module TrackCountingBTagging TrackCountingBTagging {
0702     set JetInputArray JetEnergyScale/jets
0703     set TrackInputArray HCal/eflowTracks
0704     set BitNumber 0
0705     # maximum distance between jet and track
0706     set DeltaR 0.5
0707     # minimum pt of tracks
0708     set TrackPtMin 1.0
0709     # maximum transverse impact parameter (in mm)
0710     set TrackIPMax 3
0711     # minimum ip significance for the track to be counted
0712     set SigMin 2.0
0713     set Use3D true
0714     # alternate setting for 2D IP (default)
0715     #  set SigMin 1.3
0716     #  set Use3D false
0717     # minimum number of tracks (high efficiency n=2, high purity n=3)
0718     #set Ntracks 3
0719 
0720 }
0721 
0722 ##################
0723 # PID Efficiency Maps
0724 ##################
0725 
0726 # These maps are built from the table in section 8.6 of the EIC Yellow Report.
0727 # When the table says that two species are separated by "3 sigma" we assume the
0728 # following:
0729 #
0730 # 1. Each specie is Gaussian distributed in a variable x each with the same Gaussian width, s.
0731 # 2. The separation is defined by S. For 3 sigma, S=3.
0732 # 3. The separation takes into account the two widths of the individual Gaussians, S = sqrt(s^2 + s^2).
0733 #    Thus, s = S/sqrt(2) for each of the presumed Gaussians for each specie.
0734 # 4. To compute the identification efficiency, the probability that specie A is idenfied as A, one
0735 #    uses the integral of the Gaussian within width s, e.g. p = 1 - ROOT::Math::gaussian_pdf(s) in ROOT.
0736 # 5. TO instead compute the misidentfication probability, the probability that B -> A, one instead uses
0737 #    the one-sided cumulative distribution function, e.g. p = 1 - ROOT::Math::normal_cdf(s) in ROOT.
0738 # EXAMPLE:
0739 #
0740 # Electrons need to be separable from pions at the level of 3 sigma for 1.0 <= eta <= 3.5. Thus S = 3.
0741 # That means s = 3/sqrt(2) = 2.121. Thus p(e->e) = 1 - ROOT::Math::gaussian_pdf(2.121) = 0.958.
0742 # Conversely, p(pi -> e) = 1 - ROOT::Math::normal_cdf(2.121) = 0.017. Once can also compute from this
0743 # p(e->pi) = 1 - ROOT::Math::normal_cdf(2.121) (assuming a 2-species model for PID) and p(pi->pi) = 0.958 (integral of gaussian within s)
0744 #
0745 
0746 module IdentificationMap PIDSystems {
0747     set InputArray HCal/eflowTracks
0748     set OutputArray tracks
0749 
0750 
0751     # Electron/Pion identification, treated as a 2-species problem
0752     add EfficiencyFormula {-11} {-11} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.050) * (0.00) +
0753         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.050) * (
0754                                                         (-3.5 <= eta && eta < 1.0) * (1.00) +
0755                                                         (1.0 <= eta && eta <= 3.5) * (0.95795179)) }
0756 
0757     add EfficiencyFormula {211} {-11} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.050) * (0.00) +
0758         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.050) * (
0759                                                         (-3.5 <= eta && eta < 1.0) * (1e-4) +
0760                                                         (1.0 <= eta && eta <= 3.5) * (0.016947427)) }
0761 
0762     add EfficiencyFormula {-11} {211} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.050) * (1.00) +
0763         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.050) * (
0764                                                         (-3.5 <= eta && eta < 1.0) * (0.00) +
0765                                                         (1.0 <= eta && eta <= 3.5) * (0.016947427)) }
0766 
0767     add EfficiencyFormula {211} {211} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.050) * (1.00) +
0768         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.050) * (
0769                                                         (-3.5 <= eta && eta < 1.0) * (0.99990000) +
0770                                                         (1.0 <= eta && eta <= 3.5) * (0.95795179)) }
0771 
0772     # pi/K/proton identification, assuming 3 sigma separation between all species! (all pair-wise separations are 3 sigma)
0773     # Kaons must have p > 0.135 GeV/c
0774     # Pions must have p > 0.100 GeV/c
0775 
0776     add EfficiencyFormula {321} {321} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.135) * (0.00) +
0777         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.135) * (
0778                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.95795179) +
0779                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.95795179) +
0780                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.95795179) +
0781                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.95795179) +
0782                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.95795179) +
0783                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.95795179)) }
0784 
0785     add EfficiencyFormula {321} {-211} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.135) * (1.00) +
0786         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.135) * (
0787                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.016947427) +
0788                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.016947427) +
0789                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.016947427) +
0790                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.016947427) +
0791                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.016947427) +
0792                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.016947427)) }
0793 
0794     add EfficiencyFormula {321} {2212} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.135) * (1.00) +
0795         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.135) * (
0796                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.016947427) +
0797                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.016947427) +
0798                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.016947427) +
0799                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.016947427) +
0800                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.016947427) +
0801                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.016947427)) }
0802 
0803 
0804     add EfficiencyFormula {-211} {321} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.100) * (0.00) +
0805         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.100) * (
0806                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.016947427) +
0807                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.016947427) +
0808                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.016947427) +
0809                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.016947427) +
0810                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.016947427) +
0811                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.016947427)) }
0812 
0813     add EfficiencyFormula {-211} {2212} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.100) * (0.00) +
0814         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.100) * (
0815                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.016947427) +
0816                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.016947427) +
0817                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.016947427) +
0818                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.016947427) +
0819                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.016947427) +
0820                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.016947427)) }
0821 
0822     add EfficiencyFormula {211} {211} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.100) * (1.00) +
0823         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.100) * (
0824                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.95795179) +
0825                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.95795179) +
0826                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.95795179) +
0827                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.95795179) +
0828                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.95795179) +
0829                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.95795179)) }
0830 
0831 
0832     add EfficiencyFormula {2212} {2212} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.100) * (1.00) +
0833         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.100) * (
0834                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.95795179) +
0835                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.95795179) +
0836                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.95795179) +
0837                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.95795179) +
0838                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.95795179) +
0839                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.95795179)) }
0840 
0841 
0842     add EfficiencyFormula {2212} {321} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.100) * (0.00) +
0843         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.100) * (
0844                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.016947427) +
0845                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.016947427) +
0846                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.016947427) +
0847                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.016947427) +
0848                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.016947427) +
0849                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.016947427)) }
0850 
0851 
0852     add EfficiencyFormula {2212} {-211} { (abs(eta) > 3.5 || pt * cosh(eta) < 0.100) * (0.00) +
0853         (abs(eta) <= 3.5 && pt * cosh(eta) >= 0.100) * (
0854                                                         (eta < -1.0 && pt * cosh(eta) <= 7) * (0.016947427) +
0855                                                         (-1.0 <= eta && eta < 0.5 && pt * cosh(eta) <= 10) * (0.016947427) +
0856                                                         (0.5 <= eta && eta < 1.0 && pt * cosh(eta) <= 15) * (0.016947427) +
0857                                                         (1.0 <= eta && eta < 1.5 && pt * cosh(eta) <= 30) * (0.016947427) +
0858                                                         (1.5 <= eta && eta < 2.5 && pt * cosh(eta) <= 50) * (0.016947427) +
0859                                                         (2.5 <= eta && eta <= 3.5 && pt * cosh(eta) <= 45) * (0.016947427)) }
0860 
0861     # Everything else with no PID system coverage is 100% identified as pion
0862     add EfficiencyFormula {0} {0} { 0.00 }
0863 
0864 }
0865 
0866 ##################
0867 # ROOT tree writer
0868 ##################
0869 
0870 # tracks, towers and eflow objects are not stored by default in the output.
0871 # if needed (for jet constituent or other studies), uncomment the relevant
0872 # "add Branch ..." lines.
0873 
0874 module TreeWriter TreeWriter {
0875 # add Branch InputArray BranchName BranchClass
0876   add Branch Delphes/allParticles Particle GenParticle
0877 
0878   add Branch TrackMerger/tracks Track Track
0879   add Branch Calorimeter/towers Tower Tower
0880 
0881   add Branch HCal/eflowTracks EFlowTrack Track
0882   add Branch ECal/eflowPhotons EFlowPhoton Tower
0883   add Branch HCal/eflowNeutralHadrons EFlowNeutralHadron Tower
0884 
0885   add Branch PIDSystems/tracks PIDSystemsTrack Track
0886 
0887   add Branch GenJetFinder/jets GenJet Jet
0888   add Branch GenMissingET/momentum GenMissingET MissingET
0889 
0890   add Branch UniqueObjectFinder/jets Jet Jet
0891   add Branch UniqueObjectFinder/electrons Electron Electron
0892   add Branch UniqueObjectFinder/photons Photon Photon
0893 
0894   add Branch MissingET/momentum MissingET MissingET
0895   add Branch ScalarHT/energy ScalarHT ScalarHT
0896 }