Fork me on GitHub

Changes in / [4406bf8:4a0d9d5] in git


Ignore:
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    r4406bf8 r4a0d9d5  
    13621362        modules/RunPUPPI.$(SrcSuf) \
    13631363        modules/RunPUPPI.h \
    1364         external/PUPPI/puppiCleanContainer.hh \
    1365         external/PUPPI/RecoObj.hh \
    1366         external/PUPPI/puppiParticle.hh \
    1367         external/PUPPI/puppiAlgoBin.hh \
     1364        external/PUPPI/RecoObj2.hh \
     1365        external/PUPPI/AlgoObj.hh \
    13681366        classes/DelphesClasses.h \
    13691367        classes/DelphesFactory.h \
     
    18011799
    18021800modules/RunPUPPI.h: \
    1803         classes/DelphesModule.h
     1801        classes/DelphesModule.h \
     1802        external/PUPPI/PuppiContainer.hh
    18041803        @touch $@
    18051804
     
    19331932        external/fastjet/AreaDefinition.hh \
    19341933        external/fastjet/ClusterSequenceAreaBase.hh
    1935         @touch $@
    1936 
    1937 external/PUPPI/puppiCleanContainer.hh: \
    1938         external/PUPPI/RecoObj.hh \
    1939         external/PUPPI/puppiParticle.hh \
    1940         external/PUPPI/puppiAlgoBin.hh \
    1941         external/fastjet/internal/base.hh \
    1942         external/fastjet/PseudoJet.hh
    19431934        @touch $@
    19441935
  • cards/CMS_PhaseII/CMS_PhaseII_200PU.tcl

    r4406bf8 r4a0d9d5  
     1set MaxEvents 10
     2
    13#
    24#  Phase II - Pile-Up
    35#
    46#  Main authors: Michele Selvaggi (UCL)
    5 #                               
    6 #  Released on: 
     7#
     8#  Released on:
    79#
    810#  Version: v01
     
    1416
    1517set ExecutionPath {
    16  
    17   PileUpMerger
    18  
     18
     19  PileUpMerger
    1920  ParticlePropagator
    2021
     
    2829
    2930  TrackMerger
    30  
     31
    3132  ECal
    3233  HCal
     
    3435  ElectronFilter
    3536  TrackPileUpSubtractor
    36  
     37
    3738  TowerMerger
    3839  NeutralEFlowMerger
     
    4041  EFlowMerger
    4142
     43  LeptonFilterNoLep
     44  LeptonFilterLep
     45  RunPUPPIBase
    4246  RunPUPPI
     47
     48  PhotonFilter
    4349
    4450  PhotonIsolation
    4551  PhotonEfficiency
    46  
     52
    4753  ElectronIsolation
    4854  ElectronEfficiency
    49  
     55
    5056  MuonIsolation
    5157  MuonLooseIdEfficiency
    5258  MuonTightIdEfficiency
    53  
     59
    5460  NeutrinoFilter
    5561
    5662  MissingET
     63  PuppiMissingET
    5764  GenMissingET
    5865  GenPileUpMissingET
     
    6269
    6370  ScalarHT
    64  
     71
    6572  JetEnergyScale
    6673
     
    7279
    7380  TauTagging
    74  
     81
    7582  GenParticleFilter
    76  
     83
    7784  TreeWriter
    7885}
     
    9198
    9299  # pre-generated minbias input file
    93   set PileUpFile ../eos/cms/store/group/upgrade/delphes/PhaseII/MinBias_100k.pileup 
     100  set PileUpFile ../eos/cms/store/group/upgrade/delphes/PhaseII/MinBias_100k.pileup
    94101
    95102  # average expected pile up
    96103  set MeanPileUp 200
    97  
     104
    98105  # maximum spread in the beam direction in m
    99   set ZVertexSpread 0.15
     106  set ZVertexSpread 0.25
    100107
    101108  # maximum spread in time in s
    102   set TVertexSpread 1.5E-09
     109  set TVertexSpread 800E-12
    103110
    104111  # vertex smearing formula f(z,t) (z,t need to be respectively given in m,s)
    105  
    106   #set VertexDistributionFormula {exp(-(t^2/(2*(0.05/2.99792458E8*exp(-(z^2/(2*(0.05)^2))))^2)))}
    107  
    108  
    109   set VertexDistributionFormula { (abs(t) <= 1.0e-09) * (abs(z) <= 0.15) * (1.00) +
    110                                   (abs(t) >  1.0e-09) * (abs(z) <= 0.15) * (0.00) +
    111                                   (abs(t) <= 1.0e-09) * (abs(z) > 0.15)  * (0.00) +
    112                                   (abs(t) >  1.0e-09) * (abs(z) > 0.15)  * (0.00)}
     112  set VertexDistributionFormula {exp(-(t^2/160e-12^2/2))*exp(-(z^2/0.053^2/2))}
    113113
    114114}
     
    167167  set OutputArray electrons
    168168  # tracking efficiency formula for electrons
    169   set EfficiencyFormula { 
     169  set EfficiencyFormula {
    170170      (pt <= 0.2) * (0.00) + \
    171171          (abs(eta) <= 1.2) * (pt > 0.2 && pt <= 1.0) * (pt * 0.96) + \
     
    199199          (abs(eta) > 2.8 && abs(eta) <= 4.0) * (pt > 1.0) * (0.95) + \
    200200          (abs(eta) > 4.0) * (0.00)
    201          
     201
    202202  }
    203203}
     
    212212  set InputArray  ChargedHadronTrackingEfficiency/chargedHadrons
    213213  set OutputArray chargedHadrons
    214   # resolution formula for charged hadrons , 
    215  
     214  # resolution formula for charged hadrons ,
     215
    216216  # from http://mersi.web.cern.ch/mersi/layouts/.private/Baseline_tilted_200_Pixel_1_1_1/index.html
    217217  source trackMomentumResolution.tcl
     
    229229
    230230  # resolution formula for electrons
    231  
     231
    232232  # taking something flat in energy for now, ECAL will take over at high energy anyway.
    233233  # inferred from hep-ex/1306.2016 and 1502.02701
    234   set ResolutionFormula { 
    235  
     234  set ResolutionFormula {
     235
    236236                        (abs(eta) <= 1.5)  * (1+0.64*abs(eta)^2)*(energy*0.028) +
    237237    (abs(eta) > 1.5  && abs(eta) <= 1.75)  * (energy*0.037) +
    238238    (abs(eta) > 1.75  && abs(eta) <= 2.15) * (energy*0.038) +
    239239    (abs(eta) > 2.15  && abs(eta) <= 3.00) * (energy*0.044) +
    240     (abs(eta) > 3.00  && abs(eta) <= 4.00) * (energy*0.10)}   
     240    (abs(eta) > 3.00  && abs(eta) <= 4.00) * (energy*0.10)}
    241241
    242242}
     
    250250  set OutputArray muons
    251251  # resolution formula for muons
    252  
    253   # up to |eta| < 2.8 take measurement from tracking + muon chambers 
    254   # for |eta| > 2.8 and pT < 5.0 take measurement from tracking alone taken from 
     252
     253  # up to |eta| < 2.8 take measurement from tracking + muon chambers
     254  # for |eta| > 2.8 and pT < 5.0 take measurement from tracking alone taken from
    255255  # http://mersi.web.cern.ch/mersi/layouts/.private/Baseline_tilted_200_Pixel_1_1_1/index.html
    256   source muonMomentumResolution.tcl 
     256  source muonMomentumResolution.tcl
    257257}
    258258
     
    284284  set EFlowTowerOutputArray eflowPhotons
    285285
    286   set IsEcal true 
    287  
     286  set IsEcal true
     287
    288288  set EnergyMin 0.5
    289289  set EnergySignificanceMin 1.0
     
    298298
    299299  # assume 0.02 x 0.02 resolution in eta,phi in the barrel |eta| < 1.5
    300  
     300
    301301  set PhiBins {}
    302302  for {set i -180} {$i <= 180} {incr i} {
     
    311311
    312312  # assume 0.02 x 0.02 resolution in eta,phi in the endcaps 1.5 < |eta| < 3.0 (HGCAL- ECAL)
    313  
     313
    314314  set PhiBins {}
    315315  for {set i -180} {$i <= 180} {incr i} {
     
    328328  }
    329329
    330   # take present CMS granularity for HF 
    331  
     330  # take present CMS granularity for HF
     331
    332332  # 0.175 x (0.175 - 0.35) resolution in eta,phi in the HF 3.0 < |eta| < 5.0
    333333  set PhiBins {}
     
    335335    add PhiBins [expr {$i * $pi/18.0}]
    336336  }
    337  
     337
    338338  foreach eta {-5 -4.7 -4.525 -4.35 -4.175 -4 -3.825 -3.65 -3.475 -3.3 -3.125 -2.958 3.125 3.3 3.475 3.65 3.825 4 4.175 4.35 4.525 4.7 5} {
    339339    add EtaPhiBins $eta $PhiBins
     
    361361
    362362  # set ResolutionFormula {resolution formula as a function of eta and energy}
    363  
     363
    364364  # for the ECAL barrel (|eta| < 1.5), see hep-ex/1306.2016 and 1502.02701
    365365  # for the endcaps (1.5 < |eta| < 3.0), we take HGCAL  see LHCC-P-008, Fig. 3.39, p.117
    366366
    367   set ResolutionFormula {  (abs(eta) <= 1.50)                    * (1+0.64*abs(eta)^2)*sqrt(energy^2*0.009^2 + energy*0.12^2 + 0.45^2) + 
     367  set ResolutionFormula {  (abs(eta) <= 1.50)                    * (1+0.64*abs(eta)^2)*sqrt(energy^2*0.009^2 + energy*0.12^2 + 0.45^2) +
    368368                           (abs(eta) > 1.50 && abs(eta) <= 1.75) * sqrt(energy^2*0.006^2 + energy*0.20^2) + \
    369369                           (abs(eta) > 1.75 && abs(eta) <= 2.15) * sqrt(energy^2*0.007^2 + energy*0.21^2) + \
     
    385385  set EFlowTowerOutputArray eflowNeutralHadrons
    386386
    387   set IsEcal false 
    388  
     387  set IsEcal false
     388
    389389  set EnergyMin 1.0
    390390  set EnergySignificanceMin 1.0
     
    397397  # each list starts with the lower edge of the first tower
    398398  # the list ends with the higher edged of the last tower
    399  
     399
    400400  # assume 0.087 x 0.087 resolution in eta,phi in the barrel |eta| < 1.5
    401401
     
    409409
    410410  # assume 0.02 x 0.02 resolution in eta,phi in the endcaps 1.5 < |eta| < 3.0 (HGCAL- HCAL)
    411  
     411
    412412  set PhiBins {}
    413413  for {set i -180} {$i <= 180} {incr i} {
     
    426426  }
    427427
    428   # take present CMS granularity for HF 
    429  
     428  # take present CMS granularity for HF
     429
    430430  # 0.175 x (0.175 - 0.35) resolution in eta,phi in the HF 3.0 < |eta| < 5.0
    431431  set PhiBins {}
     
    433433    add PhiBins [expr {$i * $pi/18.0}]
    434434  }
    435  
     435
    436436  foreach eta {-5 -4.7 -4.525 -4.35 -4.175 -4 -3.825 -3.65 -3.475 -3.3 -3.125 -2.958 3.125 3.3 3.475 3.65 3.825 4 4.175 4.35 4.525 4.7 5} {
    437437    add EtaPhiBins $eta $PhiBins
     
    478478}
    479479
     480
    480481##########################
    481482# Track pile-up subtractor
     
    547548#########################################
    548549
    549 module RunPUPPI RunPUPPI {
     550module PdgCodeFilter LeptonFilterNoLep {
     551  set InputArray HCal/eflowTracks
     552  set OutputArray eflowTracksNoLeptons
     553  set Invert false
     554  add PdgCode {13}
     555  add PdgCode {-13}
     556  add PdgCode {11}
     557  add PdgCode {-11}
     558}
     559
     560module PdgCodeFilter LeptonFilterLep {
     561  set InputArray HCal/eflowTracks
     562  set OutputArray eflowTracksLeptons
     563  set Invert true
     564  add PdgCode {11}
     565  add PdgCode {-11}
     566  add PdgCode {13}
     567  add PdgCode {-13}
     568}
     569
     570module RunPUPPI RunPUPPIBase {
    550571  ## input information
    551   set TrackInputArray   TrackMerger/tracks
     572  set TrackInputArray   LeptonFilterNoLep/eflowTracksNoLeptons
    552573  set NeutralInputArray NeutralEFlowMerger/eflowTowers
    553574  set PVInputArray      PileUpMerger/vertices
    554575  set MinPuppiWeight    0.05
    555576  set UseExp            false
    556  
    557   ## define puppi algorithm parameters (more than one for the same eta region is possible)                                                                                     
    558   add EtaMinBin           0.    2.5    2.5    3.0   3.0
    559   add EtaMaxBin           2.5   3.0    3.0    10.0  10.0
    560   add PtMinBin            0.    0.5    0.5    0.5   0.5
    561   add ConeSizeBin         0.25  0.25   0.25   0.25  0.25
    562   add RMSPtMinBin         0.1   0.5    0.5    0.5   0.5
    563   add RMSScaleFactorBin   1.0   1.0    1.0    1.0   1.0
    564   add NeutralMinEBin      0.2   1.0    1.0    1.5   1.5
    565   add NeutralPtSlope      0.02  0.02   0.02   0.02  0.02
    566   add ApplyCHS            true  true   true   true  true
    567   add UseCharged          true  false  false  false false
    568   add ApplyLowPUCorr      true  true   true   true  true
    569   add MetricId            5     5      1      5     1
     577  set UseNoLep          false
     578
     579  ## define puppi algorithm parameters (more than one for the same eta region is possible)
     580  add EtaMinBin           0.0   1.5   4.0
     581  add EtaMaxBin           1.5   4.0   10.0
     582  add PtMinBin            0.0   0.0   0.0
     583  add ConeSizeBin         0.2   0.2   0.2
     584  add RMSPtMinBin         0.1   0.5   0.5
     585  add RMSScaleFactorBin   1.0   1.0   1.0
     586  add NeutralMinEBin      0.2   0.2   0.5
     587  add NeutralPtSlope      0.006 0.013 0.067
     588  add ApplyCHS            true  true  true
     589  add UseCharged          true  true  false
     590  add ApplyLowPUCorr      true  true  true
     591  add MetricId            5     5     5
     592  add CombId              0     0     0
    570593
    571594  ## output name
     
    573596  set OutputArrayTracks   puppiTracks
    574597  set OutputArrayNeutrals puppiNeutrals
    575 }
    576 
    577 
     598}
     599
     600module Merger RunPUPPI {
     601  add InputArray RunPUPPIBase/PuppiParticles
     602  add InputArray LeptonFilterLep/eflowTracksLeptons
     603  set OutputArray PuppiParticles
     604}
    578605
    579606###################
     
    588615}
    589616
     617module Merger PuppiMissingET {
     618  #add InputArray InputArray
     619  add InputArray RunPUPPI/PuppiParticles
     620  #add InputArray EFlowMerger/eflow
     621  set MomentumOutputArray momentum
     622}
     623
    590624###################
    591 # Ger PileUp Missing ET 
     625# Ger PileUp Missing ET
    592626###################
    593627
     
    636670module FastJetFinder GenJetFinder {
    637671  set InputArray NeutrinoFilter/filteredParticles
    638  
     672
    639673  set OutputArray jets
    640674
     
    689723
    690724
     725#################
     726# Photon filter
     727#################
     728
     729module PdgCodeFilter PhotonFilter {
     730  set InputArray ECal/eflowPhotons
     731  set OutputArray photons
     732  set Invert true
     733  set PTMin 5.0
     734  add PdgCode {22}
     735}
     736
     737
    691738####################
    692739# Photon isolation #
     
    694741
    695742module Isolation PhotonIsolation {
    696  
     743
    697744  # particle for which calculate the isolation
    698   set CandidateInputArray ECal/eflowPhotons
    699  
     745  set CandidateInputArray PhotonFilter/photons
     746
    700747  # isolation collection
    701   set IsolationInputArray EFlowMerger/eflow
    702  
     748  set IsolationInputArray RunPUPPI/PuppiParticles
     749
    703750  # output array
    704751  set OutputArray photons
    705  
     752
     753  # veto isolation cand. based on proximity to input cand.
     754  set DeltaRMin 0.01
     755  set UseMiniCone true
     756
    706757  # isolation cone
    707758  set DeltaRMax 0.3
    708  
    709   # minimum pT 
     759
     760  # minimum pT
    710761  set PTMin     1.0
    711  
     762
    712763  # iso ratio to cut
    713764  set PTRatioMax 9999.
     765
    714766}
    715767
     
    721773
    722774module Efficiency PhotonEfficiency {
    723  
     775
    724776  ## input particles
    725   set InputArray PhotonIsolation/photons 
     777  set InputArray PhotonIsolation/photons
    726778  ## output particles
    727779  set OutputArray photons
     
    741793
    742794module Isolation ElectronIsolation {
    743  
     795
    744796  set CandidateInputArray ElectronFilter/electrons
    745  
     797
    746798  # isolation collection
    747   set IsolationInputArray EFlowMerger/eflow
    748  
     799  set IsolationInputArray RunPUPPI/PuppiParticles
     800  #set IsolationInputArray EFlowMerger/eflow
     801
    749802  set OutputArray electrons
    750  
     803
    751804  set DeltaRMax 0.3
    752805  set PTMin 1.0
     
    762815
    763816module Efficiency ElectronEfficiency {
    764  
     817
    765818  set InputArray ElectronIsolation/electrons
    766819  set OutputArray electrons
    767  
     820
    768821  # set EfficiencyFormula {efficiency formula as a function of eta and pt}
    769822  # efficiency formula for electrons
     
    773826                         (abs(eta) <= 1.45 ) * (pt >  6.0 && pt <= 8.0)   * (0.70) + \
    774827                         (abs(eta) <= 1.45 ) * (pt >  8.0 && pt <= 10.0)  * (0.85) + \
    775                          (abs(eta) <= 1.45 ) * (pt > 10.0 && pt <= 30.0)  * (0.94) + \                                                     
    776                          (abs(eta) <= 1.45 ) * (pt > 30.0 && pt <= 50.0)  * (0.97) + \                         
    777                          (abs(eta) <= 1.45 ) * (pt > 50.0 && pt <= 70.0)  * (0.98) + \         
    778                          (abs(eta) <= 1.45 ) * (pt > 70.0 )  * (1.0) + \                                                                                                 
     828                         (abs(eta) <= 1.45 ) * (pt > 10.0 && pt <= 30.0)  * (0.94) + \
     829                         (abs(eta) <= 1.45 ) * (pt > 30.0 && pt <= 50.0)  * (0.97) + \
     830                         (abs(eta) <= 1.45 ) * (pt > 50.0 && pt <= 70.0)  * (0.98) + \
     831                         (abs(eta) <= 1.45 ) * (pt > 70.0 )  * (1.0) + \
    779832                         (abs(eta) > 1.45  && abs(eta) <= 1.55) * (pt >  4.0 && pt <= 10.0)   * (0.35) + \
    780                          (abs(eta) > 1.45  && abs(eta) <= 1.55) * (pt > 10.0 && pt <= 30.0)   * (0.40) + \   
    781                          (abs(eta) > 1.45  && abs(eta) <= 1.55) * (pt > 30.0 && pt <= 70.0)   * (0.45) + \                                 
    782                          (abs(eta) > 1.45  && abs(eta) <= 1.55) * (pt > 70.0 )  * (0.55) + \   
     833                         (abs(eta) > 1.45  && abs(eta) <= 1.55) * (pt > 10.0 && pt <= 30.0)   * (0.40) + \
     834                         (abs(eta) > 1.45  && abs(eta) <= 1.55) * (pt > 30.0 && pt <= 70.0)   * (0.45) + \
     835                         (abs(eta) > 1.45  && abs(eta) <= 1.55) * (pt > 70.0 )  * (0.55) + \
    783836                         (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt >  4.0 && pt <= 10.0)  * (0.75) + \
    784                          (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 10.0 && pt <= 30.0)  * (0.85) + \                                                     
    785                          (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 30.0 && pt <= 50.0)  * (0.95) + \                         
    786                          (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 50.0 && pt <= 70.0)  * (0.95) + \         
    787                          (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 70.0 )  * (1.0) + \   
     837                         (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 10.0 && pt <= 30.0)  * (0.85) + \
     838                         (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 30.0 && pt <= 50.0)  * (0.95) + \
     839                         (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 50.0 && pt <= 70.0)  * (0.95) + \
     840                         (abs(eta) >= 1.55 && abs(eta) <= 2.0 ) * (pt > 70.0 )  * (1.0) + \
    788841                         (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt >  4.0 && pt <= 10.0)  * (0.65) + \
    789                          (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 10.0 && pt <= 30.0)  * (0.75) + \                                                     
    790                          (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 30.0 && pt <= 50.0)  * (0.90) + \                         
    791                          (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 50.0 && pt <= 70.0)  * (0.90) + \         
    792                          (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 70.0 )  * (0.90) + \                                                                           
     842                         (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 10.0 && pt <= 30.0)  * (0.75) + \
     843                         (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 30.0 && pt <= 50.0)  * (0.90) + \
     844                         (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 50.0 && pt <= 70.0)  * (0.90) + \
     845                         (abs(eta) >= 2.0 && abs(eta) <= 2.5 ) * (pt > 70.0 )  * (0.90) + \
    793846                         (abs(eta) > 2.5 && abs(eta) <= 4.0 ) * (pt > 4.0 && pt <= 10.0) * (0.65) + \
    794847                                          (abs(eta) > 2.5 && abs(eta) <= 4.0 ) * (pt > 10.0 && pt <= 30.0) * (0.75) + \
     
    797850                                          (abs(eta) > 2.5 && abs(eta) <= 4.0 ) * (pt > 70.0 ) * (0.90) + \
    798851                                          (abs(eta) > 4.0) * (0.00)
    799  
     852
    800853  }
    801854}
     
    807860module Isolation MuonIsolation {
    808861  set CandidateInputArray MuonMomentumSmearing/muons
    809  
     862
    810863  # isolation collection
    811   set IsolationInputArray EFlowMerger/eflow
    812  
     864  set IsolationInputArray RunPUPPI/PuppiParticles
     865
    813866  set OutputArray muons
    814  
     867
    815868  set DeltaRMax 0.3
    816869  set PTMin 1.0
     
    885938
    886939  set BitNumber 1
    887  
     940
    888941  source btagMedium.tcl
    889942}
    890943
    891  
    892944
    893945#############
     
    900952  set BitNumber 2
    901953
    902   source btagTight.tcl
    903 }
    904 
    905 
    906 
     954  source btagTight.tcl
     955}
    907956
    908957
     
    930979  add EfficiencyFormula {15} { (abs(eta) < 2.3) * 0.97*0.77*( (0.32 + 0.01*pt - 0.000054*pt*pt )*(pt<100)+0.78*(pt>100) ) + \
    931980                               (abs(eta) > 2.3) * (0.000)
    932                              } 
     981                             }
    933982}
    934983
     
    939988
    940989module StatusPidFilter GenParticleFilter {
    941  
     990
    942991    set InputArray  Delphes/allParticles
    943992    set OutputArray filteredParticles
    944993    set PTMin 5.0
    945    
     994
    946995}
    947996
     
    9551004  add Branch GenParticleFilter/filteredParticles Particle GenParticle
    9561005  add Branch PileUpMerger/vertices Vertex Vertex
    957  
     1006
    9581007  add Branch GenJetFinder/jets GenJet Jet
    9591008  add Branch GenMissingET/momentum GenMissingET MissingET
     
    9621011#  add Branch ECal/eflowPhotons EFlowPhoton Tower
    9631012#  add Branch HCal/eflowNeutralHadrons EFlowNeutralHadron Tower
    964  
     1013
    9651014  add Branch PhotonEfficiency/photons Photon Photon
    9661015  add Branch ElectronEfficiency/electrons Electron Electron
    9671016  add Branch MuonLooseIdEfficiency/muons MuonLoose Muon
    9681017  add Branch MuonTightIdEfficiency/muons MuonTight Muon
    969    
     1018
    9701019  add Branch JetEnergyScale/jets Jet Jet
    971  
     1020
    9721021  add Branch MissingET/momentum MissingET MissingET
     1022  add Branch PuppiMissingET/momentum PuppiMissingET MissingET
    9731023  add Branch GenPileUpMissingET/momentum GenPileUpMissingET MissingET
    9741024  add Branch ScalarHT/energy ScalarHT ScalarHT
  • cards/delphes_card_CMS.tcl

    r4406bf8 r4a0d9d5  
    271271  # Eta shape from arXiv:1306.2016, Energy shape from arXiv:1502.02701
    272272  set ECalResolutionFormula {                  (abs(eta) <= 1.5) * (1+0.64*eta^2) * sqrt(energy^2*0.008^2 + energy*0.11^2 + 0.40^2) +
    273                              (abs(eta) > 1.5 && abs(eta) <= 2.5) * (2.16 + 5.6*(eta-2)^2) * sqrt(energy^2*0.008^2 + energy*0.11^2 + 0.40^2) +
     273                             (abs(eta) > 1.5 && abs(eta) <= 2.5) * (2.16 + 5.6*(abs(eta)-2)^2) * sqrt(energy^2*0.008^2 + energy*0.11^2 + 0.40^2) +
    274274                             (abs(eta) > 2.5 && abs(eta) <= 5.0) * sqrt(energy^2*0.107^2 + energy*2.08^2)}
    275275
  • modules/Calorimeter.cc

    r4406bf8 r4a0d9d5  
    625625    tower->Eem = ecalEnergy;
    626626    tower->Ehad = 0.0;
     627    tower->PID = 22;
    627628
    628629    fEFlowPhotonOutputArray->Add(tower);
  • modules/Isolation.cc

    r4406bf8 r4a0d9d5  
    110110
    111111  fUseRhoCorrection = GetBool("UseRhoCorrection", true);
     112
     113  fDeltaRMin = GetDouble("DeltaRMin", 0.01);
     114  fUseMiniCone = GetBool("UseMiniCone", false);
    112115
    113116  fClassifier->fPTMin = GetDouble("PTMin", 0.5);
     
    157160  Double_t sumChargedNoPU, sumChargedPU, sumNeutral, sumAllParticles;
    158161  Double_t sumDBeta, ratioDBeta, sumRhoCorr, ratioRhoCorr, sum, ratio;
    159   Int_t counter;
     162  Bool_t pass = kFALSE;
    160163  Double_t eta = 0.0;
    161164  Double_t rho = 0.0;
     
    197200    sumAllParticles = 0.0;
    198201
    199     counter = 0;
    200202    itIsolationArray.Reset();
    201 
    202203    while((isolation = static_cast<Candidate*>(itIsolationArray.Next())))
    203204    {
    204205      const TLorentzVector &isolationMomentum = isolation->Momentum;
    205206
    206       if(candidateMomentum.DeltaR(isolationMomentum) <= fDeltaRMax &&
    207          candidate->GetUniqueID() != isolation->GetUniqueID())
    208       {
     207      if(fUseMiniCone)
     208      {
     209         pass = candidateMomentum.DeltaR(isolationMomentum) <= fDeltaRMax &&
     210         candidateMomentum.DeltaR(isolationMomentum) > fDeltaRMin;
     211      }
     212      else
     213      {
     214         pass = candidateMomentum.DeltaR(isolationMomentum) <= fDeltaRMax &&
     215         candidate->GetUniqueID() != isolation->GetUniqueID();
     216      }
     217
     218      if(pass)
     219      {
     220
    209221        sumAllParticles += isolationMomentum.Pt();
    210222        if(isolation->Charge != 0)
     
    223235          sumNeutral += isolationMomentum.Pt();
    224236        }
    225         ++counter;
    226       }
     237      }
     238
    227239    }
    228240
    229     // find rho
     241   // find rho
    230242    rho = 0.0;
    231243    if(fRhoInputArray)
     
    240252      }
    241253    }
     254
     255
    242256
    243257    // correct sum for pile-up contamination
  • modules/Isolation.h

    r4406bf8 r4a0d9d5  
    5757  Double_t fPTSumMax;
    5858
     59  Double_t fDeltaRMin;
     60
    5961  Bool_t fUsePTSum;
    6062
    6163  Bool_t fUseRhoCorrection;
     64
     65  Bool_t fUseMiniCone;
    6266
    6367  IsolationClassifier *fClassifier; //!
  • modules/RunPUPPI.cc

    r4406bf8 r4a0d9d5  
    11#include "modules/RunPUPPI.h"
    22
    3 #include "PUPPI/puppiCleanContainer.hh"
    4 #include "PUPPI/RecoObj.hh"
    5 #include "PUPPI/puppiParticle.hh"
    6 #include "PUPPI/puppiAlgoBin.hh"
     3#include "PUPPI/RecoObj2.hh"
     4#include "PUPPI/AlgoObj.hh"
     5//#include "PUPPI/puppiParticle.hh"
     6//#include "PUPPI/puppiAlgoBin.hh"
    77
    88#include "classes/DelphesClasses.h"
     
    3030
    3131void RunPUPPI::Init(){
    32 
    3332  // input collection
    3433  fTrackInputArray     = ImportArray(GetString("TrackInputArray", "Calorimeter/towers"));
     
    3837  fPVInputArray        = ImportArray(GetString("PVInputArray", "PV"));
    3938  fPVItInputArray      = fPVInputArray->MakeIterator();
    40 
    41 
    42   // puppi parameters                                     
     39  // puppi parameters                                 
     40  fApplyNoLep     = GetBool("UseNoLep", true);   
    4341  fMinPuppiWeight = GetDouble("MinPuppiWeight", 0.01);
    4442  fUseExp         = GetBool("UseExp", false);
    45 
    46   // read eta min ranges                                                                                                                                                           
     43  // read eta min ranges
    4744  ExRootConfParam param = GetParam("EtaMinBin");
    4845  fEtaMinBin.clear();
    4946  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fEtaMinBin.push_back(param[iMap].GetDouble());
    50 
    51   // read eta max ranges                                                                                                                                                           
     47  // read eta max ranges
    5248  param = GetParam("EtaMaxBin");
    5349  fEtaMaxBin.clear();
    5450  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fEtaMaxBin.push_back(param[iMap].GetDouble());
    55 
    56   // read pt min value                                                                                                                                                           
     51  // read pt min value
    5752  param = GetParam("PtMinBin");
    5853  fPtMinBin.clear();
    5954  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fPtMinBin.push_back(param[iMap].GetDouble());
    60 
    6155  // read cone size                                                                                                                                                           
    6256  param = GetParam("ConeSizeBin");
    6357  fConeSizeBin.clear();
    6458  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fConeSizeBin.push_back(param[iMap].GetDouble());
    65 
    6659  // read RMS min pt                                                                                                                                             
    6760  param = GetParam("RMSPtMinBin");
    6861  fRMSPtMinBin.clear();
    6962  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fRMSPtMinBin.push_back(param[iMap].GetDouble());
    70 
    71   // read RMS scale factor                                                                                                                                                           
     63  // read RMS scale factor
    7264  param = GetParam("RMSScaleFactorBin");
    7365  fRMSScaleFactorBin.clear();
    7466  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fRMSScaleFactorBin.push_back(param[iMap].GetDouble());
    75 
    76   // read neutral pt min cut                                                                                                                                                           
     67  // read neutral pt min cut
    7768  param = GetParam("NeutralMinEBin");
    7869  fNeutralMinEBin.clear();
    7970  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fNeutralMinEBin.push_back(param[iMap].GetDouble());
    80 
    81   // read neutral pt min slope                                                                                                                                                           
     71  // read neutral pt min slope
    8272  param = GetParam("NeutralPtSlope");
    8373  fNeutralPtSlope.clear();
    8474  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fNeutralPtSlope.push_back(param[iMap].GetDouble());
    85 
    8675  // read apply chs                                                                                                                                                           
    87   param = GetParam("ApplyCHS");
    88   fApplyCHS.clear();
    89   for(int iMap = 0; iMap < param.GetSize(); ++iMap) fApplyCHS.push_back(param[iMap].GetBool());
    90 
    91   // read use charged                                                                                                                                                           
     76  //param = GetParam("ApplyCHS");
     77  //fApplyCHS.clear();
     78  //for(int iMap = 0; iMap < param.GetSize(); ++iMap) fApplyCHS.push_back(param[iMap].GetBool());
     79  // read use charged
    9280  param = GetParam("UseCharged");
    9381  fUseCharged.clear();
    9482  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fUseCharged.push_back(param[iMap].GetBool());
    95 
    96   // read apply chs correction                                                                                                                                                           
     83  // read apply chs correction
    9784  param = GetParam("ApplyLowPUCorr");
    9885  fApplyLowPUCorr.clear();
    9986  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fApplyLowPUCorr.push_back(param[iMap].GetBool());
    100  
    10187  // read metric id                                                                                                                                                         
    10288  param = GetParam("MetricId");
    10389  fMetricId.clear();
    10490  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fMetricId.push_back(param[iMap].GetInt());
    105 
     91  // scheme for combining
     92  param = GetParam("CombId");
     93  fCombId.clear();
     94  for(int iMap = 0; iMap < param.GetSize(); ++iMap) fCombId.push_back(param[iMap].GetInt());
    10695  // create output array
    10796  fOutputArray        = ExportArray(GetString("OutputArray", "puppiParticles"));
    10897  fOutputTrackArray   = ExportArray(GetString("OutputArrayTracks", "puppiTracks"));
    10998  fOutputNeutralArray = ExportArray(GetString("OutputArrayNeutrals", "puppiNeutrals"));
     99  // Create algorithm list for puppi
     100  std::vector<AlgoObj> puppiAlgo;
     101  if(puppiAlgo.empty()){
     102    if(!(fEtaMinBin.size() == fEtaMaxBin.size() and fEtaMinBin.size() == fPtMinBin.size() and fEtaMinBin.size() == fConeSizeBin.size() and fEtaMinBin.size() == fRMSPtMinBin.size()
     103         and fEtaMinBin.size() == fRMSScaleFactorBin.size() and fEtaMinBin.size() == fNeutralMinEBin.size() and  fEtaMinBin.size() == fNeutralPtSlope.size()
     104         and fEtaMinBin.size() == fUseCharged.size()
     105         and fEtaMinBin.size() == fApplyLowPUCorr.size() and fEtaMinBin.size() == fMetricId.size())) {
     106      std::cerr<<" Error in PUPPI configuration, algo info should have the same size --> exit from the code"<<std::endl;
     107      std::exit(EXIT_FAILURE);
     108    }
     109  }
     110  for( size_t iAlgo =  0 ; iAlgo < fEtaMinBin.size() ; iAlgo++){
     111    AlgoObj algoTmp ;
     112    algoTmp.etaMin            = fEtaMinBin.at(iAlgo);
     113    algoTmp.etaMax            = fEtaMaxBin.at(iAlgo);
     114    algoTmp.ptMin             = fPtMinBin.at(iAlgo);
     115    algoTmp.minNeutralPt      = fNeutralMinEBin.at(iAlgo);
     116    algoTmp.minNeutralPtSlope = fNeutralPtSlope.at(iAlgo);
     117    //Eta Extrapolation stuff is missing
     118    //Loop through file requiring algos for same bins to be adjacent
     119    while(iAlgo < fEtaMinBin.size() and algoTmp.etaMin == fEtaMinBin.at(iAlgo) and algoTmp.etaMax == fEtaMaxBin.at(iAlgo)) {
     120      AlgoSubObj algoSubTmp;
     121      algoSubTmp.metricId          = fMetricId.at(iAlgo);
     122      algoSubTmp.useCharged        = fUseCharged.at(iAlgo);
     123      algoSubTmp.applyLowPUCorr    = fApplyLowPUCorr.at(iAlgo);
     124      algoSubTmp.combId            = fCombId.at(iAlgo);
     125      algoSubTmp.coneSize          = fConeSizeBin.at(iAlgo);
     126      algoSubTmp.rmsPtMin          = fRMSPtMinBin.at(iAlgo);
     127      algoSubTmp.rmsScaleFactor    = fRMSScaleFactorBin.at(iAlgo);
     128      algoTmp.subAlgos.push_back(algoSubTmp);
     129      iAlgo++;
     130    }
     131    iAlgo--;
     132    //if(std::find(puppiAlgo.begin(),puppiAlgo.end(),algoTmp) != puppiAlgo.end()) continue;   
     133    puppiAlgo.push_back(algoTmp);     
     134  }
     135  fPuppi  = new PuppiContainer(true,fUseExp,fMinPuppiWeight,puppiAlgo);
    110136}
    111137
     
    124150  TLorentzVector momentum;
    125151
    126   DelphesFactory *factory = GetFactory();
     152  //DelphesFactory *factory = GetFactory();
    127153
    128154  // loop over input objects
    129   fItTrackInputArray->Reset();
    130   fItNeutralInputArray->Reset();
    131   fPVItInputArray->Reset();
     155  fItTrackInputArray   ->Reset();
     156  fItNeutralInputArray ->Reset();
     157  fPVItInputArray      ->Reset();
    132158
    133159  std::vector<Candidate *> InputParticles;
     
    142168  std::vector<RecoObj> puppiInputVector;
    143169  puppiInputVector.clear();
    144 
     170  int lNBad  = 0;
    145171  // Loop on charge track candidate
    146172  while((candidate = static_cast<Candidate*>(fItTrackInputArray->Next()))){   
    147 
    148173      momentum = candidate->Momentum;
    149      
    150174      RecoObj curRecoObj;
    151175      curRecoObj.pt  = momentum.Pt();
     
    154178      curRecoObj.m   = momentum.M(); 
    155179      particle = static_cast<Candidate*>(candidate->GetCandidates()->Last());
     180      //if(fApplyNoLep && TMath::Abs(candidate->PID) == 11) continue; //Dumb cut to minimize the nolepton on electron
     181      //if(fApplyNoLep && TMath::Abs(candidate->PID) == 13) continue;
    156182      if (candidate->IsRecoPU and candidate->Charge !=0) { // if it comes fromPU vertexes after the resolution smearing and the dZ matching within resolution
     183        lNBad++;
    157184        curRecoObj.id    = 2;
    158         curRecoObj.vtxId = candidate->IsPU;
     185        curRecoObj.vtxId = 0.7*(fPVInputArray->GetEntries()); //Hack apply reco vtx efficiency of 70% for calibration
    159186        if(TMath::Abs(candidate->PID) == 11)      curRecoObj.pfType = 2;
    160187        else if(TMath::Abs(candidate->PID) == 13) curRecoObj.pfType = 3;
     
    183210  // Loop on neutral calo cells
    184211  while((candidate = static_cast<Candidate*>(fItNeutralInputArray->Next()))){
    185 
    186212      momentum = candidate->Momentum;
    187 
    188213      RecoObj curRecoObj;
    189214      curRecoObj.pt  = momentum.Pt();
     
    191216      curRecoObj.phi = momentum.Phi();
    192217      curRecoObj.m   = momentum.M();
     218      curRecoObj.charge = 0;
    193219      particle = static_cast<Candidate*>(candidate->GetCandidates()->Last());
    194 
    195220
    196221      if(candidate->Charge == 0){
     
    210235      InputParticles.push_back(candidate);
    211236  }
    212 
    213   // Create algorithm list for puppi
    214   std::vector<puppiAlgoBin> puppiAlgo;
    215   if(puppiAlgo.empty()){
    216    if(!(fEtaMinBin.size() == fEtaMaxBin.size() and fEtaMinBin.size() == fPtMinBin.size() and fEtaMinBin.size() == fConeSizeBin.size() and fEtaMinBin.size() == fRMSPtMinBin.size()
    217        and fEtaMinBin.size() == fRMSScaleFactorBin.size() and fEtaMinBin.size() == fNeutralMinEBin.size() and  fEtaMinBin.size() == fNeutralPtSlope.size()
    218        and fEtaMinBin.size() == fApplyCHS.size()  and fEtaMinBin.size() == fUseCharged.size()
    219        and fEtaMinBin.size() == fApplyLowPUCorr.size() and fEtaMinBin.size() == fMetricId.size())) {
    220     std::cerr<<" Error in PUPPI configuration, algo info should have the same size --> exit from the code"<<std::endl;
    221     std::exit(EXIT_FAILURE);
    222    }
    223 
    224    for( size_t iAlgo =  0 ; iAlgo < fEtaMinBin.size() ; iAlgo++){
    225     puppiAlgoBin algoTmp ;
    226     algoTmp.fEtaMin_ = fEtaMinBin.at(iAlgo);
    227     algoTmp.fEtaMax_ = fEtaMaxBin.at(iAlgo);
    228     algoTmp.fPtMin_  = fPtMinBin.at(iAlgo);
    229     algoTmp.fConeSize_        = fConeSizeBin.at(iAlgo);
    230     algoTmp.fRMSPtMin_        = fRMSPtMinBin.at(iAlgo);
    231     algoTmp.fRMSScaleFactor_  = fRMSScaleFactorBin.at(iAlgo);
    232     algoTmp.fNeutralMinE_     = fNeutralMinEBin.at(iAlgo);
    233     algoTmp.fNeutralPtSlope_  = fNeutralPtSlope.at(iAlgo);
    234     algoTmp.fApplyCHS_        = fApplyCHS.at(iAlgo);
    235     algoTmp.fUseCharged_      = fUseCharged.at(iAlgo);
    236     algoTmp.fApplyLowPUCorr_  = fApplyLowPUCorr.at(iAlgo);
    237     algoTmp.fMetricId_        = fMetricId.at(iAlgo);
    238     if(std::find(puppiAlgo.begin(),puppiAlgo.end(),algoTmp) != puppiAlgo.end()) continue;   
    239     puppiAlgo.push_back(algoTmp);     
    240    }
    241   } 
    242 
    243237  // Create PUPPI container
    244   puppiCleanContainer curEvent(puppiInputVector,puppiAlgo,fMinPuppiWeight,fUseExp);
    245   std::vector<fastjet::PseudoJet> puppiParticles = curEvent.puppiEvent();
     238  fPuppi->initialize(puppiInputVector);
     239  fPuppi->puppiWeights();
     240  std::vector<fastjet::PseudoJet> puppiParticles = fPuppi->puppiParticles();
    246241
    247242  // Loop on final particles
  • modules/RunPUPPI.h

    r4406bf8 r4a0d9d5  
    33
    44#include "classes/DelphesModule.h"
     5#include "PUPPI/PuppiContainer.hh"
    56#include <vector>
    67
     
    2930  const TObjArray *fNeutralInputArray; //!
    3031  const TObjArray *fPVInputArray; //!                                                                                                                                                     
    31  
     32  PuppiContainer* fPuppi;
    3233  // puppi parameters
    33   float fMinPuppiWeight;
     34  bool fApplyNoLep;
     35  double fMinPuppiWeight;
    3436  bool fUseExp;
    3537 
     
    4648  std::vector<bool>  fApplyLowPUCorr;
    4749  std::vector<int>   fMetricId;
     50  std::vector<int>   fCombId;
    4851
    4952  TObjArray *fOutputArray;
  • modules/SimpleCalorimeter.cc

    r4406bf8 r4a0d9d5  
    504504    tower->Eem = (!fIsEcal) ? 0 : energy;
    505505    tower->Ehad = (fIsEcal) ? 0 : energy;
    506 
     506   
    507507    tower->Momentum.SetPtEtaPhiE(pt, eta, phi, energy);
     508   
     509    tower->PID = (fIsEcal) ? 22 : 0;
     510   
    508511    fEFlowTowerOutputArray->Add(tower);
    509512  }
Note: See TracChangeset for help on using the changeset viewer.