Changeset 0e11b5c in git
- Timestamp:
- Jun 4, 2016, 8:37:11 PM (8 years ago)
- Branches:
- ImprovedOutputFile, Timing, dual_readout, llp, master
- Children:
- 7d55e69a
- Parents:
- 7b45ff5
- Files:
-
- 5 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
r7b45ff5 r0e11b5c 955 955 endif 956 956 957 tmp/external/PUPPI/PuppiAlgo.$(ObjSuf): \ 958 external/PUPPI/PuppiAlgo.$(SrcSuf) \ 959 external/fastjet/internal/base.hh 960 tmp/external/PUPPI/PuppiContainer.$(ObjSuf): \ 961 external/PUPPI/PuppiContainer.$(SrcSuf) \ 962 external/fastjet/internal/base.hh \ 957 tmp/external/PUPPI/puppiCleanContainer.$(ObjSuf): \ 958 external/PUPPI/puppiCleanContainer.$(SrcSuf) \ 963 959 external/fastjet/Selector.hh 964 960 tmp/external/fastjet/AreaDefinition.$(ObjSuf): \ … … 1313 1309 modules/RunPUPPI.$(SrcSuf) \ 1314 1310 modules/RunPUPPI.h \ 1315 external/PUPPI/RecoObj2.hh \ 1316 external/PUPPI/AlgoObj.hh \ 1311 external/PUPPI/puppiCleanContainer.hh \ 1312 external/PUPPI/RecoObj.hh \ 1313 external/PUPPI/puppiParticle.hh \ 1314 external/PUPPI/puppiAlgoBin.hh \ 1317 1315 classes/DelphesClasses.h \ 1318 1316 classes/DelphesFactory.h \ 1319 1317 classes/DelphesFormula.h 1320 1318 FASTJET_OBJ += \ 1321 tmp/external/PUPPI/PuppiAlgo.$(ObjSuf) \ 1322 tmp/external/PUPPI/PuppiContainer.$(ObjSuf) \ 1319 tmp/external/PUPPI/puppiCleanContainer.$(ObjSuf) \ 1323 1320 tmp/external/fastjet/AreaDefinition.$(ObjSuf) \ 1324 1321 tmp/external/fastjet/BasicRandom.$(ObjSuf) \ … … 1745 1742 1746 1743 modules/RunPUPPI.h: \ 1747 classes/DelphesModule.h \ 1748 external/PUPPI/PuppiContainer.hh 1744 classes/DelphesModule.h 1749 1745 @touch $@ 1750 1746 … … 1868 1864 external/fastjet/AreaDefinition.hh \ 1869 1865 external/fastjet/ClusterSequenceAreaBase.hh 1866 @touch $@ 1867 1868 external/PUPPI/puppiCleanContainer.hh: \ 1869 external/PUPPI/RecoObj.hh \ 1870 external/PUPPI/puppiParticle.hh \ 1871 external/PUPPI/puppiAlgoBin.hh \ 1872 external/fastjet/internal/base.hh \ 1873 external/fastjet/PseudoJet.hh 1870 1874 @touch $@ 1871 1875 -
cards/CMS_PhaseII/CMS_PhaseII_200PU.tcl
r7b45ff5 r0e11b5c 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 -
modules/RunPUPPI.cc
r7b45ff5 r0e11b5c 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
r7b45ff5 r0e11b5c 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;
Note:
See TracChangeset
for help on using the changeset viewer.