Changes in / [a9c67b3a:3c46e17] in git
- Files:
-
- 5 added
- 1 deleted
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
ra9c67b3a r3c46e17 1001 1001 endif 1002 1002 1003 tmp/external/PUPPI/PuppiAlgo.$(ObjSuf): \ 1004 external/PUPPI/PuppiAlgo.$(SrcSuf) \ 1005 external/fastjet/internal/base.hh 1006 tmp/external/PUPPI/PuppiContainer.$(ObjSuf): \ 1007 external/PUPPI/PuppiContainer.$(SrcSuf) \ 1008 external/fastjet/internal/base.hh \ 1003 tmp/external/PUPPI/puppiCleanContainer.$(ObjSuf): \ 1004 external/PUPPI/puppiCleanContainer.$(SrcSuf) \ 1009 1005 external/fastjet/Selector.hh 1010 1006 tmp/external/fastjet/AreaDefinition.$(ObjSuf): \ … … 1359 1355 modules/RunPUPPI.$(SrcSuf) \ 1360 1356 modules/RunPUPPI.h \ 1361 external/PUPPI/RecoObj2.hh \ 1362 external/PUPPI/AlgoObj.hh \ 1357 external/PUPPI/puppiCleanContainer.hh \ 1358 external/PUPPI/RecoObj.hh \ 1359 external/PUPPI/puppiParticle.hh \ 1360 external/PUPPI/puppiAlgoBin.hh \ 1363 1361 classes/DelphesClasses.h \ 1364 1362 classes/DelphesFactory.h \ 1365 1363 classes/DelphesFormula.h 1366 1364 FASTJET_OBJ += \ 1367 tmp/external/PUPPI/PuppiAlgo.$(ObjSuf) \ 1368 tmp/external/PUPPI/PuppiContainer.$(ObjSuf) \ 1365 tmp/external/PUPPI/puppiCleanContainer.$(ObjSuf) \ 1369 1366 tmp/external/fastjet/AreaDefinition.$(ObjSuf) \ 1370 1367 tmp/external/fastjet/BasicRandom.$(ObjSuf) \ … … 1795 1792 1796 1793 modules/RunPUPPI.h: \ 1797 classes/DelphesModule.h \ 1798 external/PUPPI/PuppiContainer.hh 1794 classes/DelphesModule.h 1799 1795 @touch $@ 1800 1796 … … 1928 1924 external/fastjet/AreaDefinition.hh \ 1929 1925 external/fastjet/ClusterSequenceAreaBase.hh 1926 @touch $@ 1927 1928 external/PUPPI/puppiCleanContainer.hh: \ 1929 external/PUPPI/RecoObj.hh \ 1930 external/PUPPI/puppiParticle.hh \ 1931 external/PUPPI/puppiAlgoBin.hh \ 1932 external/fastjet/internal/base.hh \ 1933 external/fastjet/PseudoJet.hh 1930 1934 @touch $@ 1931 1935 -
cards/CMS_PhaseII/CMS_PhaseII_200PU.tcl
ra9c67b3a r3c46e17 40 40 EFlowMerger 41 41 42 LeptonFilterNoLep43 LeptonFilterLep44 RunPUPPIBase45 42 RunPUPPI 46 47 43 48 44 PhotonIsolation … … 59 55 60 56 MissingET 61 PuppiMissingET62 57 GenMissingET 63 58 GenPileUpMissingET … … 96 91 97 92 # pre-generated minbias input file 98 set PileUpFile MinBias.pileup93 set PileUpFile ../eos/cms/store/group/upgrade/delphes/PhaseII/MinBias_100k.pileup 99 94 100 95 # average expected pile up … … 110 105 111 106 #set VertexDistributionFormula {exp(-(t^2/(2*(0.05/2.99792458E8*exp(-(z^2/(2*(0.05)^2))))^2)))} 112 set VertexDistributionFormula { (abs(t) <= 1.6e-10) * (abs(z) <= 0.053) * (1.00) + 113 (abs(t) > 1.6e-10) * (abs(z) <= 0.053) * (0.00) + 114 (abs(t) <= 1.6e-10) * (abs(z) > 0.053) * (0.00) + 115 (abs(t) > 1.6e-10) * (abs(z) > 0.053) * (0.00)} 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)} 116 113 117 114 } … … 550 547 ######################################### 551 548 552 module PdgCodeFilter LeptonFilterNoLep { 553 set InputArray HCal/eflowTracks 554 set OutputArray eflowTracksNoLeptons 555 set Invert false 556 add PdgCode {13} 557 add PdgCode {-13} 558 add PdgCode {11} 559 add PdgCode {-11} 560 } 561 562 module PdgCodeFilter LeptonFilterLep { 563 set InputArray HCal/eflowTracks 564 set OutputArray eflowTracksLeptons 565 set Invert true 566 add PdgCode {11} 567 add PdgCode {-11} 568 add PdgCode {13} 569 add PdgCode {-13} 570 } 571 572 module RunPUPPI RunPUPPIBase { 549 module RunPUPPI RunPUPPI { 573 550 ## input information 574 set TrackInputArray LeptonFilterNoLep/eflowTracksNoLeptons551 set TrackInputArray TrackMerger/tracks 575 552 set NeutralInputArray NeutralEFlowMerger/eflowTowers 576 553 set PVInputArray PileUpMerger/vertices 577 554 set MinPuppiWeight 0.05 578 555 set UseExp false 579 set UseNoLep false580 556 581 557 ## define puppi algorithm parameters (more than one for the same eta region is possible) 582 add EtaMinBin 0.0 1.5 4.0 583 add EtaMaxBin 1.5 4.0 10.0 584 add PtMinBin 0.0 0.0 0.0 585 add ConeSizeBin 0.2 0.2 0.2 586 add RMSPtMinBin 0.1 0.5 0.5 587 add RMSScaleFactorBin 1.0 1.0 1.0 588 add NeutralMinEBin 0.2 0.2 0.5 589 add NeutralPtSlope 0.006 0.013 0.067 590 add ApplyCHS true true true 591 add UseCharged true true false 592 add ApplyLowPUCorr true true true 593 add MetricId 5 5 5 594 add CombId 0 0 0 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 595 570 596 571 ## output name … … 600 575 } 601 576 602 module Merger RunPUPPI { 603 add InputArray RunPUPPIBase/PuppiParticles 604 add InputArray LeptonFilterLep/eflowTracksLeptons 605 set OutputArray PuppiParticles 606 } 577 607 578 608 579 ################### … … 614 585 # add InputArray RunPUPPI/PuppiParticles 615 586 add InputArray EFlowMerger/eflow 616 set MomentumOutputArray momentum617 }618 619 module Merger PuppiMissingET {620 #add InputArray InputArray621 add InputArray RunPUPPI/PuppiParticles622 #add InputArray EFlowMerger/eflow623 587 set MomentumOutputArray momentum 624 588 } … … 1007 971 1008 972 add Branch MissingET/momentum MissingET MissingET 1009 add Branch PuppiMissingET/momentum PuppiMissingET MissingET1010 973 add Branch GenPileUpMissingET/momentum GenPileUpMissingET MissingET 1011 974 add Branch ScalarHT/energy ScalarHT ScalarHT -
cards/delphes_card_ATLAS.tcl
ra9c67b3a r3c46e17 141 141 142 142 # resolution formula for charged hadrons 143 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 1^2 + pt^2*1.5e-4^2) +144 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0. 015^2 + pt^2*2.5e-4^2) +145 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0. 025^2 + pt^2*5.5e-4^2)}143 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 144 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 145 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 146 146 } 147 147 … … 157 157 158 158 # resolution formula for electrons 159 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 3^2 + pt^2*1.3e-3^2) +160 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0. 05^2 + pt^2*1.7e-3^2) +161 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0. 15^2 + pt^2*3.1e-3^2)}159 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 160 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 161 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 162 162 } 163 163 … … 171 171 172 172 # set ResolutionFormula {resolution formula as a function of eta and pt} 173 173 174 # resolution formula for muons 174 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 1^2 + pt^2*1.0e-4^2) +175 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.0 15^2 + pt^2*1.5e-4^2) +176 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.0 25^2 + pt^2*3.5e-4^2)}175 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.02^2 + pt^2*2.0e-4^2) + 176 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.03^2 + pt^2*3.0e-4^2) + 177 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*6.0e-4^2)} 177 178 } 178 179 -
cards/delphes_card_ATLAS_PileUp.tcl
ra9c67b3a r3c46e17 182 182 183 183 # resolution formula for charged hadrons 184 # based on arXiv:1405.6569 185 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.01^2 + pt^2*1.5e-4^2) + 186 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.015^2 + pt^2*2.5e-4^2) + 187 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.025^2 + pt^2*5.5e-4^2)} 184 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 185 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 186 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 188 187 } 189 188 … … 199 198 200 199 # resolution formula for electrons 201 # based on arXiv:1405.6569 202 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.03^2 + pt^2*1.3e-3^2) + 203 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*1.7e-3^2) + 204 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.15^2 + pt^2*3.1e-3^2)} 200 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 201 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 202 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 205 203 } 206 204 … … 216 214 217 215 # resolution formula for muons 218 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 1^2 + pt^2*1.0e-4^2) +219 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.0 15^2 + pt^2*1.5e-4^2) +220 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.0 25^2 + pt^2*3.5e-4^2)}216 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.02^2 + pt^2*2.0e-4^2) + 217 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.03^2 + pt^2*3.0e-4^2) + 218 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*6.0e-4^2)} 221 219 } 222 220 -
cards/delphes_card_CMS.tcl
ra9c67b3a r3c46e17 142 142 # resolution formula for charged hadrons 143 143 # based on arXiv:1405.6569 144 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 1^2 + pt^2*1.5e-4^2) +145 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0. 015^2 + pt^2*2.5e-4^2) +146 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0. 025^2 + pt^2*5.5e-4^2)}144 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 145 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 146 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 147 147 } 148 148 … … 159 159 # resolution formula for electrons 160 160 # based on arXiv:1405.6569 161 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 3^2 + pt^2*1.3e-3^2) +162 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0. 05^2 + pt^2*1.7e-3^2) +163 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0. 15^2 + pt^2*3.1e-3^2)}161 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 162 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 163 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 164 164 } 165 165 … … 175 175 176 176 # resolution formula for muons 177 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.01^2 + pt^2* 1.0e-4^2) +178 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.0 15^2 + pt^2*1.5e-4^2) +179 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.0 25^2 + pt^2*3.5e-4^2)}177 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.01^2 + pt^2*2.0e-4^2) + 178 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.02^2 + pt^2*3.0e-4^2) + 179 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*6.0e-4^2)} 180 180 } 181 181 -
cards/delphes_card_CMS_PileUp.tcl
ra9c67b3a r3c46e17 184 184 # resolution formula for charged hadrons 185 185 # based on arXiv:1405.6569 186 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 1^2 + pt^2*1.5e-4^2) +187 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0. 015^2 + pt^2*2.5e-4^2) +188 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0. 025^2 + pt^2*5.5e-4^2)}186 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 187 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 188 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 189 189 } 190 190 … … 201 201 # resolution formula for electrons 202 202 # based on arXiv:1405.6569 203 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.0 3^2 + pt^2*1.3e-3^2) +204 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0. 05^2 + pt^2*1.7e-3^2) +205 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0. 15^2 + pt^2*3.1e-3^2)}203 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.06^2 + pt^2*1.3e-3^2) + 204 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.10^2 + pt^2*1.7e-3^2) + 205 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.25^2 + pt^2*3.1e-3^2)} 206 206 } 207 207 … … 217 217 218 218 # resolution formula for muons 219 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.01^2 + pt^2* 1.0e-4^2) +220 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.0 15^2 + pt^2*1.5e-4^2) +221 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.0 25^2 + pt^2*3.5e-4^2)}219 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.01^2 + pt^2*2.0e-4^2) + 220 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.02^2 + pt^2*3.0e-4^2) + 221 (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*6.0e-4^2)} 222 222 } 223 223 -
modules/RunPUPPI.cc
ra9c67b3a r3c46e17 1 1 #include "modules/RunPUPPI.h" 2 2 3 #include "PUPPI/ RecoObj2.hh"4 #include "PUPPI/ AlgoObj.hh"5 //#include "PUPPI/puppiParticle.hh"6 //#include "PUPPI/puppiAlgoBin.hh"3 #include "PUPPI/puppiCleanContainer.hh" 4 #include "PUPPI/RecoObj.hh" 5 #include "PUPPI/puppiParticle.hh" 6 #include "PUPPI/puppiAlgoBin.hh" 7 7 8 8 #include "classes/DelphesClasses.h" … … 30 30 31 31 void RunPUPPI::Init(){ 32 32 33 // input collection 33 34 fTrackInputArray = ImportArray(GetString("TrackInputArray", "Calorimeter/towers")); … … 37 38 fPVInputArray = ImportArray(GetString("PVInputArray", "PV")); 38 39 fPVItInputArray = fPVInputArray->MakeIterator(); 39 // puppi parameters 40 fApplyNoLep = GetBool("UseNoLep", true); 40 41 42 // puppi parameters 41 43 fMinPuppiWeight = GetDouble("MinPuppiWeight", 0.01); 42 44 fUseExp = GetBool("UseExp", false); 43 // read eta min ranges 45 46 // read eta min ranges 44 47 ExRootConfParam param = GetParam("EtaMinBin"); 45 48 fEtaMinBin.clear(); 46 49 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fEtaMinBin.push_back(param[iMap].GetDouble()); 47 // read eta max ranges 50 51 // read eta max ranges 48 52 param = GetParam("EtaMaxBin"); 49 53 fEtaMaxBin.clear(); 50 54 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fEtaMaxBin.push_back(param[iMap].GetDouble()); 51 // read pt min value 55 56 // read pt min value 52 57 param = GetParam("PtMinBin"); 53 58 fPtMinBin.clear(); 54 59 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fPtMinBin.push_back(param[iMap].GetDouble()); 60 55 61 // read cone size 56 62 param = GetParam("ConeSizeBin"); 57 63 fConeSizeBin.clear(); 58 64 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fConeSizeBin.push_back(param[iMap].GetDouble()); 65 59 66 // read RMS min pt 60 67 param = GetParam("RMSPtMinBin"); 61 68 fRMSPtMinBin.clear(); 62 69 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fRMSPtMinBin.push_back(param[iMap].GetDouble()); 63 // read RMS scale factor 70 71 // read RMS scale factor 64 72 param = GetParam("RMSScaleFactorBin"); 65 73 fRMSScaleFactorBin.clear(); 66 74 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fRMSScaleFactorBin.push_back(param[iMap].GetDouble()); 67 // read neutral pt min cut 75 76 // read neutral pt min cut 68 77 param = GetParam("NeutralMinEBin"); 69 78 fNeutralMinEBin.clear(); 70 79 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fNeutralMinEBin.push_back(param[iMap].GetDouble()); 71 // read neutral pt min slope 80 81 // read neutral pt min slope 72 82 param = GetParam("NeutralPtSlope"); 73 83 fNeutralPtSlope.clear(); 74 84 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fNeutralPtSlope.push_back(param[iMap].GetDouble()); 85 75 86 // read apply chs 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 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 80 92 param = GetParam("UseCharged"); 81 93 fUseCharged.clear(); 82 94 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fUseCharged.push_back(param[iMap].GetBool()); 83 // read apply chs correction 95 96 // read apply chs correction 84 97 param = GetParam("ApplyLowPUCorr"); 85 98 fApplyLowPUCorr.clear(); 86 99 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fApplyLowPUCorr.push_back(param[iMap].GetBool()); 100 87 101 // read metric id 88 102 param = GetParam("MetricId"); 89 103 fMetricId.clear(); 90 104 for(int iMap = 0; iMap < param.GetSize(); ++iMap) fMetricId.push_back(param[iMap].GetInt()); 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()); 105 95 106 // create output array 96 107 fOutputArray = ExportArray(GetString("OutputArray", "puppiParticles")); 97 108 fOutputTrackArray = ExportArray(GetString("OutputArrayTracks", "puppiTracks")); 98 109 fOutputNeutralArray = ExportArray(GetString("OutputArrayNeutrals", "puppiNeutrals")); 99 // Create algorithm list for puppi100 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 missing118 //Loop through file requiring algos for same bins to be adjacent119 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);136 110 } 137 111 … … 150 124 TLorentzVector momentum; 151 125 152 //DelphesFactory *factory = GetFactory();126 DelphesFactory *factory = GetFactory(); 153 127 154 128 // loop over input objects 155 fItTrackInputArray 156 fItNeutralInputArray 157 fPVItInputArray 129 fItTrackInputArray->Reset(); 130 fItNeutralInputArray->Reset(); 131 fPVItInputArray->Reset(); 158 132 159 133 std::vector<Candidate *> InputParticles; … … 168 142 std::vector<RecoObj> puppiInputVector; 169 143 puppiInputVector.clear(); 170 int lNBad = 0; 144 171 145 // Loop on charge track candidate 172 146 while((candidate = static_cast<Candidate*>(fItTrackInputArray->Next()))){ 147 173 148 momentum = candidate->Momentum; 149 174 150 RecoObj curRecoObj; 175 151 curRecoObj.pt = momentum.Pt(); … … 178 154 curRecoObj.m = momentum.M(); 179 155 particle = static_cast<Candidate*>(candidate->GetCandidates()->Last()); 180 //if(fApplyNoLep && TMath::Abs(candidate->PID) == 11) continue; //Dumb cut to minimize the nolepton on electron181 //if(fApplyNoLep && TMath::Abs(candidate->PID) == 13) continue;182 156 if (candidate->IsRecoPU and candidate->Charge !=0) { // if it comes fromPU vertexes after the resolution smearing and the dZ matching within resolution 183 lNBad++;184 157 curRecoObj.id = 2; 185 curRecoObj.vtxId = 0.7*(fPVInputArray->GetEntries()); //Hack apply reco vtx efficiency of 70% for calibration158 curRecoObj.vtxId = candidate->IsPU; 186 159 if(TMath::Abs(candidate->PID) == 11) curRecoObj.pfType = 2; 187 160 else if(TMath::Abs(candidate->PID) == 13) curRecoObj.pfType = 3; … … 210 183 // Loop on neutral calo cells 211 184 while((candidate = static_cast<Candidate*>(fItNeutralInputArray->Next()))){ 185 212 186 momentum = candidate->Momentum; 187 213 188 RecoObj curRecoObj; 214 189 curRecoObj.pt = momentum.Pt(); … … 216 191 curRecoObj.phi = momentum.Phi(); 217 192 curRecoObj.m = momentum.M(); 218 curRecoObj.charge = 0;219 193 particle = static_cast<Candidate*>(candidate->GetCandidates()->Last()); 194 220 195 221 196 if(candidate->Charge == 0){ … … 235 210 InputParticles.push_back(candidate); 236 211 } 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 237 243 // Create PUPPI container 238 fPuppi->initialize(puppiInputVector); 239 fPuppi->puppiWeights(); 240 std::vector<fastjet::PseudoJet> puppiParticles = fPuppi->puppiParticles(); 244 puppiCleanContainer curEvent(puppiInputVector,puppiAlgo,fMinPuppiWeight,fUseExp); 245 std::vector<fastjet::PseudoJet> puppiParticles = curEvent.puppiEvent(); 241 246 242 247 // Loop on final particles -
modules/RunPUPPI.h
ra9c67b3a r3c46e17 3 3 4 4 #include "classes/DelphesModule.h" 5 #include "PUPPI/PuppiContainer.hh"6 5 #include <vector> 7 6 … … 30 29 const TObjArray *fNeutralInputArray; //! 31 30 const TObjArray *fPVInputArray; //! 32 PuppiContainer* fPuppi;31 33 32 // puppi parameters 34 bool fApplyNoLep; 35 double fMinPuppiWeight; 33 float fMinPuppiWeight; 36 34 bool fUseExp; 37 35 … … 48 46 std::vector<bool> fApplyLowPUCorr; 49 47 std::vector<int> fMetricId; 50 std::vector<int> fCombId;51 48 52 49 TObjArray *fOutputArray; -
readers/DelphesCMSFWLite.cpp
ra9c67b3a r3c46e17 164 164 candidate->Momentum.SetPxPyPzE(px, py, pz, e); 165 165 166 candidate->Position.SetXYZT(x *10.0, y*10.0, z*10.0, 0.0);166 candidate->Position.SetXYZT(x, y, z, 0.0); 167 167 168 168 allParticleOutputArray->Add(candidate); -
readers/DelphesPythia8.cpp
ra9c67b3a r3c46e17 144 144 interrupted = true; 145 145 } 146 147 148 // Single-particle gun. The particle must be a colour singlet.149 // Input: flavour, energy, direction (theta, phi).150 // If theta < 0 then random choice over solid angle.151 // Optional final argument to put particle at rest => E = m.152 // from pythia8 example 21153 154 void fillParticle(int id, double ee_max, double thetaIn, double phiIn,155 Pythia8::Event& event, Pythia8::ParticleData& pdt, Pythia8::Rndm& rndm, bool atRest = false) {156 157 // Reset event record to allow for new event.158 event.reset();159 160 // Angles uniform in solid angle.161 double cThe, sThe, phi, ee;162 cThe = 2. * rndm.flat() - 1.;163 sThe = Pythia8::sqrtpos(1. - cThe * cThe);164 phi = 2. * M_PI * rndm.flat();165 ee = pow(10,1+(log10(ee_max)-1)*rndm.flat());166 double mm = pdt.mSel(id);167 double pp = Pythia8::sqrtpos(ee*ee - mm*mm);168 169 // Store the particle in the event record.170 event.append( id, 1, 0, 0, pp * sThe * cos(phi), pp * sThe * sin(phi), pp * cThe, ee, mm);171 172 }173 174 void fillPartons(int type, double ee_max, Pythia8::Event& event, Pythia8::ParticleData& pdt,175 Pythia8::Rndm& rndm) {176 177 // Reset event record to allow for new event.178 event.reset();179 180 // Angles uniform in solid angle.181 double cThe, sThe, phi, ee;182 183 // Information on a q qbar system, to be hadronized.184 185 cThe = 2. * rndm.flat() - 1.;186 sThe = Pythia8::sqrtpos(1. - cThe * cThe);187 phi = 2. * M_PI * rndm.flat();188 ee = pow(10,1+(log10(ee_max)-1)*rndm.flat());189 double mm = pdt.m0(type);190 double pp = Pythia8::sqrtpos(ee*ee - mm*mm);191 if (type == 21)192 {193 event.append( 21, 23, 101, 102, pp * sThe * cos(phi), pp * sThe * sin(phi), pp * cThe, ee);194 event.append( 21, 23, 102, 101, -pp * sThe * cos(phi), -pp * sThe * sin(phi), -pp * cThe, ee);195 }196 else197 {198 event.append( type, 23, 101, 0, pp * sThe * cos(phi), pp * sThe * sin(phi), pp * cThe, ee, mm);199 event.append( -type, 23, 0, 101, -pp * sThe * cos(phi), -pp * sThe * sin(phi), -pp * cThe, ee, mm);200 }201 }202 203 146 204 147 //--------------------------------------------------------------------------- … … 270 213 // Initialize Pythia 271 214 pythia = new Pythia8::Pythia; 272 //Pythia8::Event& event = pythia->event;273 //Pythia8::ParticleData& pdt = pythia->particleData;274 215 275 216 if(pythia == NULL) … … 289 230 timesAllowErrors = pythia->mode("Main:timesAllowErrors"); 290 231 291 // Check if particle gun 292 if (!pythia->flag("Main:spareFlag1")) 293 { 294 inputFile = fopen(pythia->word("Beams:LHEF").c_str(), "r"); 295 if(inputFile) 296 { 297 reader = new DelphesLHEFReader; 298 reader->SetInputFile(inputFile); 299 300 branchEventLHEF = treeWriter->NewBranch("EventLHEF", LHEFEvent::Class()); 301 branchWeightLHEF = treeWriter->NewBranch("WeightLHEF", LHEFWeight::Class()); 302 303 allParticleOutputArrayLHEF = modularDelphes->ExportArray("allParticlesLHEF"); 304 stableParticleOutputArrayLHEF = modularDelphes->ExportArray("stableParticlesLHEF"); 305 partonOutputArrayLHEF = modularDelphes->ExportArray("partonsLHEF"); 306 } 232 inputFile = fopen(pythia->word("Beams:LHEF").c_str(), "r"); 233 if(inputFile) 234 { 235 reader = new DelphesLHEFReader; 236 reader->SetInputFile(inputFile); 237 238 branchEventLHEF = treeWriter->NewBranch("EventLHEF", LHEFEvent::Class()); 239 branchWeightLHEF = treeWriter->NewBranch("WeightLHEF", LHEFWeight::Class()); 240 241 allParticleOutputArrayLHEF = modularDelphes->ExportArray("allParticlesLHEF"); 242 stableParticleOutputArrayLHEF = modularDelphes->ExportArray("stableParticlesLHEF"); 243 partonOutputArrayLHEF = modularDelphes->ExportArray("partonsLHEF"); 307 244 } 308 245 … … 323 260 while(reader && reader->ReadBlock(factory, allParticleOutputArrayLHEF, 324 261 stableParticleOutputArrayLHEF, partonOutputArrayLHEF) && !reader->EventReady()); 325 326 if (pythia->flag("Main:spareFlag1"))327 {328 if (pythia->mode("Main:spareMode1") == 11 || pythia->mode("Main:spareMode1") == 13 || pythia->mode("Main:spareMode1") == 22)329 {330 fillParticle( pythia->mode("Main:spareMode1"), pythia->parm("Main:spareParm1"), -1., 0.,pythia->event, pythia->particleData, pythia->rndm, 0);331 }332 else fillPartons( pythia->mode("Main:spareMode1"), pythia->parm("Main:spareParm1"), pythia->event, pythia->particleData, pythia->rndm);333 }334 262 335 263 if(!pythia->next())
Note:
See TracChangeset
for help on using the changeset viewer.