From 3efc321a3aa7cd702e255f8d9e81133828a7ec9d Mon Sep 17 00:00:00 2001 From: Haifa Rejeb Sfar Date: Sun, 26 Jan 2020 16:55:39 +0100 Subject: [PATCH 1/3] Unpacker code --- Unpacker/unpackNanoXFast.cc | 820 +++++++++++++++++++++++++++++++----- 1 file changed, 715 insertions(+), 105 deletions(-) diff --git a/Unpacker/unpackNanoXFast.cc b/Unpacker/unpackNanoXFast.cc index 3bd732c..26317a2 100644 --- a/Unpacker/unpackNanoXFast.cc +++ b/Unpacker/unpackNanoXFast.cc @@ -16,6 +16,59 @@ #include "exprtk.hpp" +/*template +void print(A a, ARGS ... args) +{ + std::cout<(args); +} + +template +void print(A a) {std::cout< +class FillerScalar +{ + IN buffer[NINPUT]; + OUT buffer; + + public: + FillerScalar(const std::string& name, const std::string& inputLength) + { + } + + void bookBranch(TTree* tree) + { + tree->TBranch(name.c_str()) ; + + + } +}; + + +template +class FillerVector +{ + IN buffer[NINPUT]; + OUT buffer[NOUT]; + + public: + FillerVector(const std::string& name , const std::string& inputLength, const std::string& outputLength) + { + } + + void bookBranch(TTree* tree) + { + tree->TBranch(name.c_str()) ; + + + } +}; +Filler<1,int,float> +Filler<1,float>*/ + class UnpackedTree { public: @@ -27,13 +80,9 @@ class UnpackedTree static constexpr int maxEntries = 25; static constexpr int bufferSize = 64000; //default is 32kB - unsigned int jetorigin_isPU; - unsigned int jetorigin_isUndefined; - float jetorigin_displacement; - float jetorigin_ctau; - float jetorigin_decay_angle; + unsigned int jetorigin_isPU; unsigned int jetorigin_isB; unsigned int jetorigin_isBB; unsigned int jetorigin_isGBB; @@ -45,13 +94,67 @@ class UnpackedTree unsigned int jetorigin_isS; unsigned int jetorigin_isUD; unsigned int jetorigin_isG; - unsigned int jetorigin_fromLLP; + //unsigned int jetorigin_fromLLP; + //Include LLP flavour : + unsigned int jetorigin_isLLP_RAD; //no flavour match (likely from wide angle radiation) + unsigned int jetorigin_isLLP_MU; //prompt lepton + unsigned int jetorigin_isLLP_E; //prompt lepton + unsigned int jetorigin_isLLP_Q; //single light quark + unsigned int jetorigin_isLLP_QMU; //single light quark + prompt lepton + unsigned int jetorigin_isLLP_QE; //single light quark + prompt lepton + unsigned int jetorigin_isLLP_QQ; //double light quark + unsigned int jetorigin_isLLP_QQMU; //double light quark + prompt lepton + unsigned int jetorigin_isLLP_QQE; //double light quark + prompt lepton + unsigned int jetorigin_isLLP_B; //single b/c quark + unsigned int jetorigin_isLLP_BMU; //single b/c quark + prompt lepton + unsigned int jetorigin_isLLP_BE; //single b/c quark + prompt lepton + unsigned int jetorigin_isLLP_BB; //double b/c quark + unsigned int jetorigin_isLLP_BBMU; //double b/c quark + prompt lepton + unsigned int jetorigin_isLLP_BBE; //double b/c quark + prompt lepton + unsigned int jetorigin_isUndefined; + float jetorigin_displacement; +// float jetorigin_ctau; + float jetorigin_decay_angle; + float jetorigin_displacement_xy; + float jetorigin_displacement_z ; + float jetorigin_betagamma; + int jetorigin_jetIdx; + int jetorigin_partonFlavor; + int jetorigin_hadronFlavor; + int jetorigin_llpId; + float jetorigin_llp_mass; + float jetorigin_llp_pt; + + //unsigned int nglobal; float global_pt; float global_eta; float global_rho; + float global_mass; +// float global_energy; + int global_n60; + int global_n90; + float global_chargedEmEnergyFraction; + float global_chargedHadronEnergyFraction; + float global_chargedMuEnergyFraction; + float global_electronEnergyFraction; + + float global_tau1; + float global_tau2; + float global_tau3; + + float global_relMassDropMassAK; + float global_relMassDropMassCA; + float global_relSoftDropMassAK; + float global_relSoftDropMassCA; + + float global_thrust; + float global_sphericity; + float global_circularity; + float global_isotropy; + float global_eventShapeC; + float global_eventShapeD; - float isData; float xsecweight; float processId; @@ -77,8 +180,8 @@ class UnpackedTree float cpf_track_chi2[maxEntries]; float cpf_track_ndof[maxEntries]; float cpf_track_quality[maxEntries]; - float cpf_jetmassdroprel[maxEntries]; - float cpf_relIso01[maxEntries]; + float cpf_relmassdrop[maxEntries]; +// float cpf_relIso01[maxEntries]; float csv_trackSumJetEtRatio; float csv_trackSumJetDeltaR; @@ -97,7 +200,7 @@ class UnpackedTree float npf_hcal_fraction[maxEntries]; float npf_drminsv[maxEntries]; float npf_puppi_weight[maxEntries]; - float npf_jetmassdroprel[maxEntries]; + float npf_relmassdrop[maxEntries]; float npf_relIso01[maxEntries]; unsigned int nsv; @@ -113,11 +216,76 @@ class UnpackedTree float sv_d3dsig[maxEntries]; float sv_costhetasvpv[maxEntries]; float sv_enratio[maxEntries]; + + +// add muons variables : +// + + + unsigned int nmu; + float muon_jetIdx[maxEntries] ; + float muon_isGlobal[maxEntries] ; + float muon_isTight[maxEntries] ; + float muon_isMedium[maxEntries] ; + float muon_isLoose[maxEntries] ; + float muon_isStandAlone[maxEntries] ; + + + float muon_ptrel [maxEntries]; + float muon_EtaRel[maxEntries]; + float muon_phi[maxEntries]; + float muon_charge [maxEntries]; + float muon_energy[maxEntries]; +// float muon_et [maxEntries]; + float muon_jetDeltaR [maxEntries]; + float muon_numberOfMatchedStations [maxEntries]; + + float muon_2dIp [maxEntries]; + float muon_2dIpSig [maxEntries]; + float muon_3dIp [maxEntries]; + float muon_3dIpSig [maxEntries]; + + float muon_dxy [maxEntries]; + float muon_dxyError [maxEntries]; + float muon_dxySig [maxEntries]; + float muon_dz [maxEntries]; + float muon_dzError [maxEntries]; + float muon_numberOfValidPixelHits[maxEntries]; + float muon_numberOfpixelLayersWithMeasurement [maxEntries]; +// float muon_numberOfstripLayersWithMeasurement [maxEntries]; //that does not help. needs to be discussed. + + float muon_chi2 [maxEntries]; + float muon_ndof [maxEntries]; + + float muon_caloIso [maxEntries]; + float muon_ecalIso [maxEntries]; + float muon_hcalIso [maxEntries]; + + float muon_sumPfChHadronPt [maxEntries]; + float muon_sumPfNeuHadronEt [maxEntries]; + float muon_Pfpileup [maxEntries]; + float muon_sumPfPhotonEt [maxEntries]; + + float muon_sumPfChHadronPt03 [maxEntries]; + float muon_sumPfNeuHadronEt03 [maxEntries]; + float muon_Pfpileup03 [maxEntries]; + float muon_sumPfPhotonEt03 [maxEntries]; + + float muon_sumChHadronPt [maxEntries]; + float muon_sumNeuHadronEt [maxEntries]; + float muon_pileup [maxEntries]; + float muon_sumPhotonEt [maxEntries]; + + float muon_timeAtIpInOut [maxEntries]; + float muon_timeAtIpInOutErr [maxEntries]; + float muon_timeAtIpOutIn [maxEntries]; + + unsigned int nelec; - unsigned int nlegacyTag; +/* unsigned int nlegacyTag; float legacyTag_median_dxy; float legacyTag_median_trackSip2dSig; - float legacyTag_alpha; + float legacyTag_alpha;*/ public: UnpackedTree(const std::string& fileName, bool addTruth=true): @@ -132,12 +300,6 @@ class UnpackedTree if (addTruth) { tree_->Branch("jetorigin_isPU",&jetorigin_isPU,"jetorigin_isPU/I",bufferSize); - tree_->Branch("jetorigin_isUndefined",&jetorigin_isUndefined,"jetorigin_isUndefined/I",bufferSize); - - tree_->Branch("jetorigin_displacement",&jetorigin_displacement,"jetorigin_displacement/F",bufferSize); - tree_->Branch("jetorigin_ctau",&jetorigin_ctau,"jetorigin_ctau/F",bufferSize); - tree_->Branch("jetorigin_decay_angle",&jetorigin_decay_angle,"jetorigin_decay_angle/F",bufferSize); - tree_->Branch("jetorigin_isB",&jetorigin_isB,"jetorigin_isB/I",bufferSize); tree_->Branch("jetorigin_isBB",&jetorigin_isBB,"jetorigin_isBB/I",bufferSize); tree_->Branch("jetorigin_isGBB",&jetorigin_isGBB,"jetorigin_isGBB/I",bufferSize); @@ -149,7 +311,37 @@ class UnpackedTree tree_->Branch("jetorigin_isS",&jetorigin_isS,"jetorigin_isS/I",bufferSize); tree_->Branch("jetorigin_isUD",&jetorigin_isUD,"jetorigin_isUD/I",bufferSize); tree_->Branch("jetorigin_isG",&jetorigin_isG,"jetorigin_isG/I",bufferSize); - tree_->Branch("jetorigin_fromLLP",&jetorigin_fromLLP,"jetorigin_fromLLP/I",bufferSize); + //Add LLP flavour : + tree_->Branch("jetorigin_isLLP_RAD",&jetorigin_isLLP_RAD , "jetorigin_isLLP_RAD/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_MU",&jetorigin_isLLP_MU , "jetorigin_isLLP_MU/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_E",&jetorigin_isLLP_E , "jetorigin_isLLP_E/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_Q",&jetorigin_isLLP_Q , "jetorigin_isLLP_Q/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QMU",&jetorigin_isLLP_QMU, "jetorigin_isLLP_QMU/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QE",&jetorigin_isLLP_QE , "jetorigin_isLLP_QE/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQ",&jetorigin_isLLP_QQ , "jetorigin_isLLP_QQ/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQMU",&jetorigin_isLLP_QQMU ,"jetorigin_isLLP_QQMU/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE , "jetorigin_isLLP_QQE/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE ,"jetorigin_isLLP_QQE/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BMU",&jetorigin_isLLP_BMU , "jetorigin_isLLP_BMU/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BE",&jetorigin_isLLP_BE ,"jetorigin_isLLP_BE/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BB",&jetorigin_isLLP_BB, "jetorigin_isLLP_BB/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BBMU",&jetorigin_isLLP_BBMU , "jetorigin_isLLP_BBMU/I", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BBE",&jetorigin_isLLP_BBE , "jetorigin_isLLP_BBE", bufferSize) ; + + //tree_->Branch("jetorigin_fromLLP",&jetorigin_fromLLP,"jetorigin_fromLLP/I",bufferSize); + tree_->Branch("jetorigin_isUndefined",&jetorigin_isUndefined,"jetorigin_isUndefined/I",bufferSize); + tree_->Branch("jetorigin_displacement",&jetorigin_displacement,"jetorigin_displacement/F",bufferSize); + //tree_->Branch("jetorigin_ctau",&jetorigin_ctau,"jetorigin_ctau/F",bufferSize); + tree_->Branch("jetorigin_decay_angle",&jetorigin_decay_angle,"jetorigin_decay_angle/F",bufferSize); + tree_->Branch("jetorigin_displacement_xy" , &jetorigin_displacement_xy ,"jetorigin_decay_displacement_xy/F" , bufferSize); + tree_->Branch("jetorigin_displacement_z" , &jetorigin_displacement_z ,"jetorigin_displacement_z/F" ,bufferSize); + tree_->Branch("jetorigin_betagamma", &jetorigin_betagamma ,"jetorigin_betagamma/F" ,bufferSize); + tree_->Branch("jetorigin_jetIdx", &jetorigin_jetIdx , "jetorigin_jetIdx/F" , bufferSize ) ; + tree_->Branch("jetorigin_partonFlavor", &jetorigin_partonFlavor , "jetorigin_partonFlavor/I" , bufferSize ) ; + tree_->Branch("jetorigin_hadronFlavor", &jetorigin_hadronFlavor , "jetorigin_hadronFlavor/I" , bufferSize ) ; + tree_->Branch("jetorigin_llpId", &jetorigin_llpId , "jetorigin_llpId/I" , bufferSize ) ; + tree_->Branch("jetorigin_llp_mass", &jetorigin_llp_mass , "jetorigin_llp_mass/F" , bufferSize ) ; + tree_->Branch("jetorigin_llp_pt", &jetorigin_llp_pt , "jetorigin_llp_pt/F" , bufferSize ) ; } else { @@ -162,6 +354,31 @@ class UnpackedTree tree_->Branch("global_eta",&global_eta,"global_eta/F",bufferSize); tree_->Branch("global_rho",&global_rho,"global_rho/F",bufferSize); + tree_->Branch("global_mass",&global_mass,"global_mass/F", bufferSize); +// tree_->Branch("global_energy",&global_energy,"global_energy/F", bufferSize); + tree_->Branch("global_n60",&global_n60,"global_n60/I", bufferSize); + tree_->Branch("global_n90",&global_n90,"global_n90/I", bufferSize); + tree_->Branch("global_chargedEmEnergyFraction",&global_chargedEmEnergyFraction,"global_chargedEmEnergyFraction/F", bufferSize); + tree_->Branch("global_chargedHadronEnergyFraction",&global_chargedHadronEnergyFraction,"global_chargedHadronEnergyFraction/F", bufferSize); + tree_->Branch("global_chargedMuEnergyFraction",&global_chargedMuEnergyFraction,"global_chargedMuEnergyFraction/F", bufferSize); + tree_->Branch("global_electronEnergyFraction",&global_electronEnergyFraction,"global_electronEnergyFraction/F", bufferSize); + + tree_->Branch("global_tau1",&global_tau1,"global_tau1/F", bufferSize); + tree_->Branch("global_tau2",&global_tau2,"global_tau2/F", bufferSize); + tree_->Branch("global_tau3",&global_tau3,"global_tau3/F", bufferSize); + + tree_->Branch("global_relMassDropMassAK",&global_relMassDropMassAK,"global_relMassDropMassAK/F", bufferSize); + tree_->Branch("global_relMassDropMassCA",&global_relMassDropMassCA,"global_relMassDropMassCA/F", bufferSize); + tree_->Branch("global_relSoftDropMassAK",&global_relSoftDropMassAK,"global_relSoftDropMassAK/F", bufferSize); + tree_->Branch("global_relSoftDropMassCA",&global_relSoftDropMassCA,"global_relSoftDropMassCA/F", bufferSize); + + tree_->Branch("global_thrust",&global_thrust,"global_thrust/F", bufferSize); + tree_->Branch("global_sphericity",&global_sphericity,"global_sphericity/F", bufferSize); + tree_->Branch("global_circularity",&global_circularity,"global_circularity/F", bufferSize); + tree_->Branch("global_isotropy",&global_isotropy,"global_isotropy/F", bufferSize); + tree_->Branch("global_eventShapeC",&global_eventShapeC,"global_eventShapeC/F", bufferSize); + tree_->Branch("global_eventShapeD",&global_eventShapeD ,"global_eventShapeD/F", bufferSize); + tree_->Branch("ncpf",&ncpf,"ncpf/I",bufferSize); tree_->Branch("cpf_trackEtaRel",&cpf_trackEtaRel,"cpf_trackEtaRel[ncpf]/F",bufferSize); tree_->Branch("cpf_trackPtRel",&cpf_trackPtRel,"cpf_trackPtRel[ncpf]/F",bufferSize); @@ -183,8 +400,8 @@ class UnpackedTree tree_->Branch("cpf_track_chi2",&cpf_track_chi2,"cpf_track_chi2[ncpf]/F",bufferSize); tree_->Branch("cpf_track_ndof",&cpf_track_ndof,"cpf_track_ndof[ncpf]/F",bufferSize); tree_->Branch("cpf_track_quality",&cpf_track_quality,"cpf_track_quality[ncpf]/F",bufferSize); - tree_->Branch("cpf_jetmassdroprel",&cpf_jetmassdroprel,"cpf_jetmassdroprel[ncpf]/F",bufferSize); - tree_->Branch("cpf_relIso01",&cpf_relIso01,"cpf_relIso01[ncpf]/F",bufferSize); + tree_->Branch("cpf_relmassdrop",&cpf_relmassdrop,"cpf_relmassdrop[ncpf]/F",bufferSize); +// tree_->Branch("cpf_relIso01",&cpf_relIso01,"cpf_relIso01[ncpf]/F",bufferSize); tree_->Branch("csv_trackSumJetEtRatio",&csv_trackSumJetEtRatio,"csv_trackSumJetEtRatio/F",bufferSize); tree_->Branch("csv_trackSumJetDeltaR",&csv_trackSumJetDeltaR,"csv_trackSumJetDeltaR/F",bufferSize); @@ -203,7 +420,7 @@ class UnpackedTree tree_->Branch("npf_hcal_fraction",&npf_hcal_fraction,"npf_hcal_fraction[nnpf]/F",bufferSize); tree_->Branch("npf_drminsv",&npf_drminsv,"npf_drminsv[nnpf]/F",bufferSize); tree_->Branch("npf_puppi_weight",&npf_puppi_weight,"npf_puppi_weight[nnpf]/F",bufferSize); - tree_->Branch("npf_jetmassdroprel",&npf_jetmassdroprel,"npf_jetmassdroprel[nnpf]/F",bufferSize); + tree_->Branch("npf_relmassdrop",&npf_relmassdrop,"npf_relmassdrop[nnpf]/F",bufferSize); tree_->Branch("npf_relIso01",&npf_relIso01,"npf_relIso01[nnpf]/F",bufferSize); tree_->Branch("nsv",&nsv,"nsv/I",bufferSize); @@ -219,11 +436,63 @@ class UnpackedTree tree_->Branch("sv_d3dsig",&sv_d3dsig,"sv_d3dsig[nsv]/F",bufferSize); tree_->Branch("sv_costhetasvpv",&sv_costhetasvpv,"sv_costhetasvpv[nsv]/F",bufferSize); tree_->Branch("sv_enratio",&sv_enratio,"sv_enratio[nsv]/F",bufferSize); + + + tree_->Branch("nmu",&nmu,"nmu/I",bufferSize); + tree_->Branch("muon_jetIdx",&muon_jetIdx,"muon_jetIdx[nmu]/F",bufferSize); + tree_->Branch("muon_isGlobal",&muon_isGlobal, "muon_isGlobal[nmu]/F",bufferSize); + tree_->Branch("muon_isTight",&muon_isTight,"muon_isTight[nmu]/F",bufferSize); + tree_->Branch("muon_isMedium",&muon_isMedium,"muon_isMedium[nmu]/F",bufferSize); + tree_->Branch("muon_isLoose",&muon_isLoose,"muon_isLoose[nmu]/F",bufferSize); + tree_->Branch("muon_isStandAlone",&muon_isStandAlone,"muon_isStandAlone[nmu]/F",bufferSize); + + + tree_->Branch("muon_ptrel", &muon_ptrel,"muon_ptrel[nmu]/F",bufferSize); + tree_->Branch("muon_EtaRel", &muon_EtaRel,"muon_EtaRel[nmu]/F",bufferSize); + tree_->Branch("muon_phi",&muon_phi,"muon_phi[nmu]/F",bufferSize); + tree_->Branch("muon_charge",&muon_charge,"muon_charge[nmu]/F",bufferSize); + tree_->Branch("muon_energy",&muon_energy,"muon_energy[nmu]/F",bufferSize); +// tree_->Branch("muon_et",&muon_et, "muon_et[nmu]/F",bufferSize); + tree_->Branch("muon_jetDeltaR",&muon_jetDeltaR,"muon_jetDeltaR[nmu]/F",bufferSize); + tree_->Branch("muon_numberOfMatchedStations",&muon_numberOfMatchedStations,"muon_numberOfMatchedStations[nmu]/F",bufferSize); + + tree_->Branch("muon_2dIp", &muon_2dIp,"muon_2dIp[nmu]/F",bufferSize); + tree_->Branch("muon_2dIpSig", &muon_2dIpSig, "muon_2dIpSi[nmu]/F",bufferSize); + tree_->Branch("muon_3dIp",&muon_3dIp,"muon_3dIp[nmu]/F",bufferSize); + tree_->Branch("muon_3dIpSig",&muon_3dIpSig,"muon_3dIpSig[nmu]/F",bufferSize); + + tree_->Branch("muon_dxy", &muon_dxy, "muon_dxy[nmu]/F",bufferSize); + tree_->Branch("muon_dxyError", &muon_dxyError,"muon_dxyError[nmu]/F",bufferSize); + tree_->Branch("muon_dxySig",&muon_dxySig,"muon_dxySig[nmu]/F",bufferSize); + tree_->Branch("muon_dz",&muon_dz, "muon_dz[nmu]/F",bufferSize); + tree_->Branch("muon_dzError", &muon_dzError,"muon_dzError[nmu]/F",bufferSize); + tree_->Branch("muon_numberOfValidPixelHits",&muon_numberOfValidPixelHits, "muon_numberOfValidPixelHits[nmu]/F",bufferSize); + tree_->Branch("muon_numberOfpixelLayersWithMeasurement", &muon_numberOfpixelLayersWithMeasurement, "muon_numberOfpixelLayersWithMeasurement[nmu]/F",bufferSize); +// tree_->Branch("muon_numberOfstripLayersWithMeasurement", &muon_numberOfstripLayersWithMeasurement, "muon_numberOfstripLayersWithMeasurement[nmu]/F",bufferSize); //that does not help. needs to be discussed. + + tree_->Branch("muon_chi2", &muon_chi2, "muon_chi2[nmu]/F",bufferSize); + tree_->Branch("muon_ndof",&muon_ndof, "muon_ndof[nmu]/F",bufferSize); + + tree_->Branch("muon_caloIso",&muon_caloIso,"muon_caloIso[nmu]/F",bufferSize); + tree_->Branch("muon_ecalIso",&muon_ecalIso,"muon_ecalIso[nmu]/F",bufferSize); + tree_->Branch("muon_hcalIso",&muon_hcalIso,"muon_hcalIso[nmu]/F",bufferSize); + + tree_->Branch("muon_sumPfChHadronPt",&muon_sumPfChHadronPt,"muon_sumPfChHadronPt[nmu]/F",bufferSize); + tree_->Branch("muon_sumPfNeuHadronEt",&muon_sumPfNeuHadronEt,"muon_sumPfNeuHadronEt[nmu]/F",bufferSize); + tree_->Branch("muon_Pfpileup",&muon_Pfpileup,"muon_Pfpileup[nmu]/F",bufferSize); + tree_->Branch("muon_sumPfPhotonEt",&muon_sumPfPhotonEt,"muon_sumPfPhotonEt[nmu]/F",bufferSize); + + tree_->Branch("muon_sumPfChHadronPt03",&muon_sumPfChHadronPt03, "muon_sumPfChHadronPt03[nmu]/F",bufferSize); + tree_->Branch("muon_sumPfNeuHadronEt03",&muon_sumPfNeuHadronEt03,"muon_sumPfNeuHadronEt03[nmu]/F",bufferSize); + tree_->Branch("muon_Pfpileup03",&muon_Pfpileup03,"muon_Pfpileup03[nmu]/F",bufferSize); + tree_->Branch("muon_sumPfPhotonEt03",&muon_sumPfPhotonEt03,"muon_sumPfPhotonEt03[nmu]/F",bufferSize); + + tree_->Branch("muon_sumChHadronPt",&muon_sumChHadronPt, "muon_sumChHadronPt[nmu]/F",bufferSize); - tree_->Branch("nlegacyTag",&nlegacyTag,"nlegacyTag/I",bufferSize); +/* tree_->Branch("nlegacyTag",&nlegacyTag,"nlegacyTag/I",bufferSize); tree_->Branch("legacyTag_median_dxy",&legacyTag_median_dxy,"legacyTag_median_dxy/F",bufferSize); tree_->Branch("legacyTag_median_trackSip2dSig",&legacyTag_median_trackSip2dSig,"legacyTag_median_trackSip2dSig/F",bufferSize); - tree_->Branch("legacyTag_alpha",&legacyTag_alpha,"legacyTag_alpha/F",bufferSize); + tree_->Branch("legacyTag_alpha",&legacyTag_alpha,"legacyTag_alpha/F",bufferSize);*/ tree_->SetBasketSize("*",bufferSize); //default is 16kB } @@ -282,11 +551,6 @@ class NanoXTree unsigned int njetorigin; float jetorigin_isPU[maxEntries]; - float jetorigin_isUndefined[maxEntries]; - - float jetorigin_displacement[maxEntries]; - float jetorigin_decay_angle[maxEntries]; - float jetorigin_isB[maxEntries]; float jetorigin_isBB[maxEntries]; float jetorigin_isGBB[maxEntries]; @@ -298,20 +562,77 @@ class NanoXTree float jetorigin_isS[maxEntries]; float jetorigin_isUD[maxEntries]; float jetorigin_isG[maxEntries]; - float jetorigin_fromLLP[maxEntries]; +// float jetorigin_fromLLP[maxEntries]; + //Include LLP flavour : + float jetorigin_isLLP_RAD[maxEntries]; + float jetorigin_isLLP_MU[maxEntries]; + float jetorigin_isLLP_E[maxEntries]; + float jetorigin_isLLP_Q[maxEntries]; + float jetorigin_isLLP_QMU[maxEntries]; + float jetorigin_isLLP_QE[maxEntries]; + float jetorigin_isLLP_QQ[maxEntries]; + float jetorigin_isLLP_QQMU[maxEntries]; + float jetorigin_isLLP_QQE[maxEntries]; + float jetorigin_isLLP_B[maxEntries]; + float jetorigin_isLLP_BMU[maxEntries]; + float jetorigin_isLLP_BE[maxEntries]; + float jetorigin_isLLP_BB[maxEntries]; + float jetorigin_isLLP_BBMU[maxEntries]; + float jetorigin_isLLP_BBE[maxEntries]; + float jetorigin_isUndefined[maxEntries]; + + float jetorigin_displacement[maxEntries]; +// float jetorigin_ctau[maxEntries]; + float jetorigin_decay_angle[maxEntries]; + float jetorigin_displacement_xy[maxEntries]; + float jetorigin_displacement_z[maxEntries]; + float jetorigin_betagamma[maxEntries]; + int jetorigin_jetIdx[maxEntries]; + int jetorigin_partonFlavor[maxEntries]; + int jetorigin_hadronFlavor[maxEntries]; + int jetorigin_llpId[maxEntries]; + float jetorigin_llp_mass[maxEntries]; + float jetorigin_llp_pt[maxEntries]; //float jetorigin_llpmass_reco[maxEntries]; - unsigned int nglobal; + unsigned int nglobal; float global_pt[maxEntries]; float global_eta[maxEntries]; + float global_mass[maxEntries]; +// float global_energy[maxEntries]; + int global_n60[maxEntries]; + int global_n90[maxEntries]; + float global_chargedEmEnergyFraction[maxEntries]; + float global_chargedHadronEnergyFraction[maxEntries]; + float global_chargedMuEnergyFraction[maxEntries]; + float global_electronEnergyFraction[maxEntries]; + + float global_tau1[maxEntries]; + float global_tau2[maxEntries]; + float global_tau3[maxEntries]; + + float global_relMassDropMassAK[maxEntries]; + float global_relMassDropMassCA[maxEntries]; + float global_relSoftDropMassAK[maxEntries]; + float global_relSoftDropMassCA[maxEntries]; + + float global_thrust[maxEntries]; + float global_sphericity[maxEntries]; + float global_circularity[maxEntries]; + float global_isotropy[maxEntries]; + float global_eventShapeC[maxEntries]; + float global_eventShapeD[maxEntries]; + float global_rho; float xsecweight; float processId; float isData; - - unsigned int ncpflength; - float cpflength_length[maxEntries]; +// Not sure about this 2 lines. +// + Int_t length_cpf; + float cpf_length[maxEntries]; +///////////////////////////// unsigned int ncpf[maxEntries]; float cpf_trackEtaRel[maxEntries]; @@ -334,8 +655,8 @@ class NanoXTree float cpf_track_chi2[maxEntries]; float cpf_track_ndof[maxEntries]; float cpf_track_quality[maxEntries]; - float cpf_jetmassdroprel[maxEntries]; - float cpf_relIso01[maxEntries]; + float cpf_relmassdrop[maxEntries]; +// float cpf_relIso01[maxEntries]; unsigned int ncsv[maxEntries]; float csv_trackSumJetEtRatio[maxEntries]; @@ -358,7 +679,7 @@ class NanoXTree float npf_hcal_fraction[maxEntries]; float npf_drminsv[maxEntries]; float npf_puppi_weight[maxEntries]; - float npf_jetmassdroprel[maxEntries]; + float npf_relmassdrop[maxEntries]; float npf_relIso01[maxEntries]; unsigned int nsvlength; @@ -378,10 +699,69 @@ class NanoXTree float sv_costhetasvpv[maxEntries]; float sv_enratio[maxEntries]; - unsigned int nlegacyTag[maxEntries]; + unsigned int nmu; + int muon_jetIdx[maxEntries] ; + float muon_isGlobal[maxEntries] ; + float muon_isTight[maxEntries] ; + float muon_isMedium[maxEntries] ; + float muon_isLoose[maxEntries] ; + float muon_isStandAlone[maxEntries] ; + + + float muon_ptrel [maxEntries]; + float muon_EtaRel[maxEntries]; + float muon_phi[maxEntries]; + float muon_charge [maxEntries]; + float muon_energy[maxEntries]; +// float muon_et [maxEntries]; + float muon_jetDeltaR [maxEntries]; + float muon_numberOfMatchedStations [maxEntries]; + + float muon_2dIp [maxEntries]; + float muon_2dIpSig [maxEntries]; + float muon_3dIp [maxEntries]; + float muon_3dIpSig [maxEntries]; + + float muon_dxy [maxEntries]; + float muon_dxyError [maxEntries]; + float muon_dxySig [maxEntries]; + float muon_dz [maxEntries]; + float muon_dzError [maxEntries]; + float muon_numberOfValidPixelHits[maxEntries]; + float muon_numberOfpixelLayersWithMeasurement [maxEntries]; +// float muon_numberOfstripLayersWithMeasurement [maxEntries]; + + float muon_chi2 [maxEntries]; + float muon_ndof [maxEntries]; + + float muon_caloIso [maxEntries]; + float muon_ecalIso [maxEntries]; + float muon_hcalIso [maxEntries]; + + float muon_sumPfChHadronPt [maxEntries]; + float muon_sumPfNeuHadronEt [maxEntries]; + float muon_Pfpileup [maxEntries]; + float muon_sumPfPhotonEt [maxEntries]; + + float muon_sumPfChHadronPt03 [maxEntries]; + float muon_sumPfNeuHadronEt03 [maxEntries]; + float muon_Pfpileup03 [maxEntries]; + float muon_sumPfPhotonEt03 [maxEntries]; + + float muon_sumChHadronPt [maxEntries]; + float muon_sumNeuHadronEt [maxEntries]; + float muon_pileup [maxEntries]; + float muon_sumPhotonEt [maxEntries]; + + float muon_timeAtIpInOut [maxEntries]; + float muon_timeAtIpInOutErr [maxEntries]; + float muon_timeAtIpOutIn [maxEntries]; + + unsigned int nelec; +/* unsigned int nlegacyTag[maxEntries]; float legacyTag_median_dxy[maxEntries]; float legacyTag_median_trackSip2dSig[maxEntries]; - float legacyTag_alpha[maxEntries]; + float legacyTag_alpha[maxEntries];*/ std::mt19937 randomGenerator_; @@ -403,12 +783,28 @@ class NanoXTree float isS; float isUD; float isG; - float fromLLP; +// add here what you want + float isLLP_RAD; + float isLLP_MU; + float isLLP_E; + float isLLP_Q; + float isLLP_QMU; + float isLLP_QE; + float isLLP_QQ; + float isLLP_QQMU; + float isLLP_QQE; + float isLLP_B; + float isLLP_BMU; + float isLLP_BE; + float isLLP_BB; + float isLLP_BBMU; + float isLLP_BBE; float isPU; + float fromLLP; float rand; float logpt; - float ctau; + // float ctau; SymbolTable symbolTable_; std::vector selections_; @@ -457,7 +853,38 @@ class NanoXTree tree_->SetBranchAddress("jetorigin_isUD",&jetorigin_isUD); tree_->SetBranchAddress("jetorigin_isG",&jetorigin_isG); tree_->SetBranchAddress("jetorigin_isPU",&jetorigin_isPU); - tree_->SetBranchAddress("jetorigin_fromLLP",&jetorigin_fromLLP); + //tree_->SetBranchAddress("jetorigin_fromLLP",&jetorigin_fromLLP); + + tree_->SetBranchAddress("jetorigin_isLLP_RAD",&jetorigin_isLLP_RAD ) ; + tree_->SetBranchAddress("jetorigin_isLLP_MU",&jetorigin_isLLP_MU) ; + tree_->SetBranchAddress("jetorigin_isLLP_E",&jetorigin_isLLP_E ) ; + tree_->SetBranchAddress("jetorigin_isLLP_Q",&jetorigin_isLLP_Q ) ; + tree_->SetBranchAddress("jetorigin_isLLP_QMU",&jetorigin_isLLP_QMU) ; + tree_->SetBranchAddress("jetorigin_isLLP_QE",&jetorigin_isLLP_QE) ; + tree_->SetBranchAddress("jetorigin_isLLP_QQ",&jetorigin_isLLP_QQ ); + tree_->SetBranchAddress("jetorigin_isLLP_QQMU",&jetorigin_isLLP_QQMU ); + tree_->SetBranchAddress("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE) ; + tree_->SetBranchAddress("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE ) ; + tree_->SetBranchAddress("jetorigin_isLLP_BMU",&jetorigin_isLLP_BMU) ; + tree_->SetBranchAddress("jetorigin_isLLP_BE",&jetorigin_isLLP_BE ) ; + tree_->SetBranchAddress("jetorigin_isLLP_BB",&jetorigin_isLLP_BB) ; + tree_->SetBranchAddress("jetorigin_isLLP_BBMU",&jetorigin_isLLP_BBMU) ; + tree_->SetBranchAddress("jetorigin_isLLP_BBE",&jetorigin_isLLP_BBE ) ; + + //tree_->SetBranchAddress("jetorigin_fromLLP",&jetorigin_fromLLP,"jetorigin_fromLLP/I",bufferSize); + tree_->SetBranchAddress("jetorigin_isUndefined",&jetorigin_isUndefined); + tree_->SetBranchAddress("jetorigin_displacement",&jetorigin_displacement); + //tree_->SetBranchAddress("jetorigin_ctau",&jetorigin_ctau,"jetorigin_ctau/F",bufferSize); + tree_->SetBranchAddress("jetorigin_decay_angle",&jetorigin_decay_angle); + tree_->SetBranchAddress("jetorigin_displacement_xy" , &jetorigin_displacement_xy); + tree_->SetBranchAddress("jetorigin_displacement_z" , &jetorigin_displacement_z); + tree_->SetBranchAddress("jetorigin_betagamma", &jetorigin_betagamma); + tree_->SetBranchAddress("jetorigin_jetIdx", &jetorigin_jetIdx); + tree_->SetBranchAddress("jetorigin_partonFlavor", &jetorigin_partonFlavor); + tree_->SetBranchAddress("jetorigin_hadronFlavor", &jetorigin_hadronFlavor); + tree_->SetBranchAddress("jetorigin_llpId", &jetorigin_llpId); + tree_->SetBranchAddress("jetorigin_llp_mass", &jetorigin_llp_mass); + tree_->SetBranchAddress("jetorigin_llp_pt", &jetorigin_llp_pt); } else { @@ -466,6 +893,7 @@ class NanoXTree tree_->SetBranchAddress("isData",&isData); tree_->SetBranchAddress("processId",&processId); } + //tree_->SetBranchAddress("jetorigin_llpmass_reco",&jetorigin_llpmass_reco); tree_->SetBranchAddress("nglobal",&nglobal); @@ -473,8 +901,35 @@ class NanoXTree tree_->SetBranchAddress("global_eta",&global_eta); tree_->SetBranchAddress("fixedGridRhoFastjetAll",&global_rho); - tree_->SetBranchAddress("ncpflength",&ncpflength); - tree_->SetBranchAddress("cpflength_length",&cpflength_length); + tree_->SetBranchAddress("global_mass",&global_mass); +// tree_->SetBranchAddress("global_energy",&global_energy); + tree_->SetBranchAddress("global_n60",&global_n60); + tree_->SetBranchAddress("global_n90",&global_n90); + tree_->SetBranchAddress("global_chargedEmEnergyFraction",&global_chargedEmEnergyFraction); + tree_->SetBranchAddress("global_chargedHadronEnergyFraction",&global_chargedHadronEnergyFraction); + tree_->SetBranchAddress("global_chargedMuEnergyFraction",&global_chargedMuEnergyFraction); + tree_->SetBranchAddress("global_electronEnergyFraction",&global_electronEnergyFraction); + + tree_->SetBranchAddress("global_tau1",&global_tau1); + tree_->SetBranchAddress("global_tau2",&global_tau2); + tree_->SetBranchAddress("global_tau3",&global_tau3); + + tree_->SetBranchAddress("global_relMassDropMassAK",&global_relMassDropMassAK); + tree_->SetBranchAddress("global_relMassDropMassCA",&global_relMassDropMassCA); + tree_->SetBranchAddress("global_relSoftDropMassAK",&global_relSoftDropMassAK); + tree_->SetBranchAddress("global_relSoftDropMassCA",&global_relSoftDropMassCA); + + tree_->SetBranchAddress("global_thrust",&global_thrust); + tree_->SetBranchAddress("global_sphericity",&global_sphericity); + tree_->SetBranchAddress("global_circularity",&global_circularity); + tree_->SetBranchAddress("global_isotropy",&global_isotropy); + tree_->SetBranchAddress("global_eventShapeC",&global_eventShapeC); + tree_->SetBranchAddress("global_eventShapeD",&global_eventShapeD); + +// Here also it is related. +// + tree_->SetBranchAddress("length_cpf",&length_cpf); + tree_->SetBranchAddress("cpf",&cpf_length); tree_->SetBranchAddress("ncpf",&ncpf); tree_->SetBranchAddress("cpf_trackEtaRel",&cpf_trackEtaRel); @@ -497,8 +952,8 @@ class NanoXTree tree_->SetBranchAddress("cpf_track_chi2",&cpf_track_chi2); tree_->SetBranchAddress("cpf_track_ndof",&cpf_track_ndof); tree_->SetBranchAddress("cpf_track_quality",&cpf_track_quality); - tree_->SetBranchAddress("cpf_jetmassdroprel",&cpf_jetmassdroprel); - tree_->SetBranchAddress("cpf_relIso01",&cpf_relIso01); + tree_->SetBranchAddress("cpf_relmassdrop",&cpf_relmassdrop); +// tree_->SetBranchAddress("cpf_relIso01",&cpf_relIso01); tree_->SetBranchAddress("ncsv",&ncsv); tree_->SetBranchAddress("csv_trackSumJetEtRatio",&csv_trackSumJetEtRatio); @@ -521,7 +976,7 @@ class NanoXTree tree_->SetBranchAddress("npf_hcal_fraction",&npf_hcal_fraction); tree_->SetBranchAddress("npf_drminsv",&npf_drminsv); tree_->SetBranchAddress("npf_puppi_weight",&npf_puppi_weight); - tree_->SetBranchAddress("npf_jetmassdroprel",&npf_jetmassdroprel); + tree_->SetBranchAddress("npf_relmassdrop",&npf_relmassdrop); tree_->SetBranchAddress("npf_relIso01",&npf_relIso01); tree_->SetBranchAddress("nsvlength",&nsvlength); @@ -541,10 +996,59 @@ class NanoXTree tree_->SetBranchAddress("sv_costhetasvpv",&sv_costhetasvpv); tree_->SetBranchAddress("sv_enratio",&sv_enratio); - tree_->SetBranchAddress("nlegacyTag",&nlegacyTag); + tree_->SetBranchAddress("muon_jetIdx",&muon_jetIdx); + tree_->SetBranchAddress("muon_isGlobal",&muon_isGlobal); + tree_->SetBranchAddress("muon_isTight",&muon_isTight); + tree_->SetBranchAddress("muon_isMedium",&muon_isMedium); + tree_->SetBranchAddress("muon_isLoose",&muon_isLoose); + tree_->SetBranchAddress("muon_isStandAlone",&muon_isStandAlone); + + + tree_->SetBranchAddress("muon_ptrel", &muon_ptrel); + tree_->SetBranchAddress("muon_EtaRel", &muon_EtaRel); + tree_->SetBranchAddress("muon_phi",&muon_phi); + tree_->SetBranchAddress("muon_charge",&muon_charge); + tree_->SetBranchAddress("muon_energy",&muon_energy); +// tree_->SetBranchAddress("muon_et",&muon_et); + tree_->SetBranchAddress("muon_jetDeltaR",&muon_jetDeltaR); + tree_->SetBranchAddress("muon_numberOfMatchedStations",&muon_numberOfMatchedStations); + + tree_->SetBranchAddress("muon_2dIp", &muon_2dIp); + tree_->SetBranchAddress("muon_2dIpSig", &muon_2dIpSig); + tree_->SetBranchAddress("muon_3dIp",&muon_3dIp); + tree_->SetBranchAddress("muon_3dIpSig",&muon_3dIpSig); + + tree_->SetBranchAddress("muon_dxy", &muon_dxy); + tree_->SetBranchAddress("muon_dxyError", &muon_dxyError); + tree_->SetBranchAddress("muon_dxySig",&muon_dxySig); + tree_->SetBranchAddress("muon_dz",&muon_dz); + tree_->SetBranchAddress("muon_dzError", &muon_dzError); + tree_->SetBranchAddress("muon_numberOfValidPixelHits",&muon_numberOfValidPixelHits); + tree_->SetBranchAddress("muon_numberOfpixelLayersWithMeasurement", &muon_numberOfpixelLayersWithMeasurement); +// tree_->SetBranchAddress("muon_numberOfstripLayersWithMeasurement", &muon_numberOfstripLayersWithMeasurement); //that does not help. needs to be discussed. + + tree_->SetBranchAddress("muon_chi2", &muon_chi2); + tree_->SetBranchAddress("muon_ndof",&muon_ndof); + + tree_->SetBranchAddress("muon_caloIso",&muon_caloIso); + tree_->SetBranchAddress("muon_ecalIso",&muon_ecalIso); + tree_->SetBranchAddress("muon_hcalIso",&muon_hcalIso); + + tree_->SetBranchAddress("muon_sumPfChHadronPt",&muon_sumPfChHadronPt); + tree_->SetBranchAddress("muon_sumPfNeuHadronEt",&muon_sumPfNeuHadronEt); + tree_->SetBranchAddress("muon_Pfpileup",&muon_Pfpileup); + tree_->SetBranchAddress("muon_sumPfPhotonEt",&muon_sumPfPhotonEt); + + tree_->SetBranchAddress("muon_sumPfChHadronPt03",&muon_sumPfChHadronPt03); + tree_->SetBranchAddress("muon_sumPfNeuHadronEt03",&muon_sumPfNeuHadronEt03); + tree_->SetBranchAddress("muon_Pfpileup03",&muon_Pfpileup03); + tree_->SetBranchAddress("muon_sumPfPhotonEt03",&muon_sumPfPhotonEt03); + tree_->SetBranchAddress("muon_sumChHadronPt",&muon_sumChHadronPt); + +/* tree_->SetBranchAddress("nlegacyTag",&nlegacyTag); tree_->SetBranchAddress("legacyTag_median_dxy",&legacyTag_median_dxy); tree_->SetBranchAddress("legacyTag_median_trackSip2dSig",&legacyTag_median_trackSip2dSig); - tree_->SetBranchAddress("legacyTag_alpha",&legacyTag_alpha); + tree_->SetBranchAddress("legacyTag_alpha",&legacyTag_alpha);*/ //getEvent(0,true); @@ -562,13 +1066,29 @@ class NanoXTree symbolTable_.add_variable("isUD",isUD); symbolTable_.add_variable("isG",isG); - symbolTable_.add_variable("fromLLP",fromLLP); - symbolTable_.add_variable("isPU",isPU); - - symbolTable_.add_variable("rand",rand); - symbolTable_.add_variable("ctau",ctau); +// symbolTable_.add_variable("fromLLP",fromLLP); + //symbolTable_.add_variable("rand",rand); + //symbolTable_.add_variable("ctau",ctau); + symbolTable_.add_variable("logpt",logpt); + symbolTable_.add_variable("isLLP_RAD" ,isLLP_RAD) ; + symbolTable_.add_variable("isLLP_MU" ,isLLP_MU) ; + symbolTable_.add_variable("isLLP_E",isLLP_E) ; + symbolTable_.add_variable("isLLP_Q" ,isLLP_Q) ; + symbolTable_.add_variable("isLLP_QMU" ,isLLP_QMU) ; + symbolTable_.add_variable("isLLP_QE" ,isLLP_QE) ; + symbolTable_.add_variable("isLLP_QQ" ,isLLP_QQ ) ; + symbolTable_.add_variable("isLLP_QQMU" ,isLLP_QQMU) ; + symbolTable_.add_variable("isLLP_QQE" ,isLLP_QQE) ; + symbolTable_.add_variable("isLLP_B" ,isLLP_B) ; + symbolTable_.add_variable("isLLP_BMU" ,isLLP_BMU) ; + symbolTable_.add_variable("isLLP_BE" ,isLLP_BE) ; + symbolTable_.add_variable("isLLP_BB" ,isLLP_BB) ; + symbolTable_.add_variable("isLLP_BBMU" ,isLLP_BBMU) ; + symbolTable_.add_variable("isLLP_BBE" ,isLLP_BBE) ; + symbolTable_.add_variable("isPU",isPU); + for (auto selectstring: selectors) { @@ -647,6 +1167,8 @@ class NanoXTree //just a sanity check + // long jetIndex = jetorigin_jetIdx[jet]; + // std::cout<<"index is : "<< jetorigin_jetIdx[jet] << " jet eta is : "<< Jet_eta[jet] << " global jet is : " <0.01) { std::cout<<"Encountered mismatch between standard nanoaod jets and xtag info"<2.4) + if (std::fabs(Jet_eta[jet])>2.4) { return false; } @@ -697,22 +1219,38 @@ class NanoXTree } //setup variables for exp evaluation - isB = jetorigin_isB[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isBB = jetorigin_isBB[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isGBB = jetorigin_isGBB[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isLeptonic_B = jetorigin_isLeptonic_B[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isLeptonic_C = jetorigin_isLeptonic_C[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; + isB = jetorigin_isB[jet]; + isBB = jetorigin_isBB[jet]; + isGBB = jetorigin_isGBB[jet]; + isLeptonic_B = jetorigin_isLeptonic_B[jet]; + isLeptonic_C = jetorigin_isLeptonic_C[jet]; - isC = jetorigin_isC[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isCC = jetorigin_isCC[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isGCC = jetorigin_isGCC[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; + isC = jetorigin_isC[jet]; + isCC = jetorigin_isCC[jet]; + isGCC = jetorigin_isGCC[jet]; - isS = jetorigin_isS[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isUD = jetorigin_isUD[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; - isG = jetorigin_isG[jet]>0.5 and jetorigin_fromLLP[jet]<0.5; + isS = jetorigin_isS[jet]; + isUD = jetorigin_isUD[jet]; + isG = jetorigin_isG[jet]; - fromLLP = jetorigin_fromLLP[jet]>0.5; - isPU = jetorigin_isPU[jet]>0.5; +// Add here LLP flavour + + isLLP_RAD= jetorigin_isLLP_RAD[jet]; + isLLP_MU= jetorigin_isLLP_MU[jet]; + isLLP_E= jetorigin_isLLP_E[jet]; + isLLP_Q= jetorigin_isLLP_Q[jet]; + isLLP_QMU= jetorigin_isLLP_QMU[jet]; + isLLP_QE= jetorigin_isLLP_QE[jet]; + isLLP_QQ= jetorigin_isLLP_QQ[jet]; + isLLP_QQMU= jetorigin_isLLP_QQMU[jet]; + isLLP_QQE= jetorigin_isLLP_QQE[jet]; + isLLP_B= jetorigin_isLLP_B[jet]; + isLLP_BMU= jetorigin_isLLP_BMU[jet]; + isLLP_BE= jetorigin_isLLP_BE[jet]; + isLLP_BB= jetorigin_isLLP_BB[jet]; + isLLP_BBMU= jetorigin_isLLP_BBMU[jet]; + isLLP_BBE= jetorigin_isLLP_BBE[jet]; + isPU = jetorigin_isPU[jet]; } else @@ -732,13 +1270,28 @@ class NanoXTree isS = 0; isUD = 0; isG = 0; - fromLLP = 0; + //fromLLP = 0; + isLLP_RAD = 0; + isLLP_MU = 0; + isLLP_E = 0; + isLLP_Q = 0; + isLLP_QMU = 0; + isLLP_QE = 0; + isLLP_QQ = 0; + isLLP_QQMU = 0; + isLLP_QQE = 0; + isLLP_B = 0; + isLLP_BMU = 0; + isLLP_BE = 0; + isLLP_BB = 0; + isLLP_BBMU = 0; + isLLP_BBE = 0; isPU = 0; } rand = uniform_dist_(randomGenerator_); - ctau = 1e9; + //ctau = 1e9; logpt = std::log10(std::max(0.1f,global_pt[jet])); for (auto setter: setters_) @@ -763,8 +1316,8 @@ class NanoXTree int getJetClass(unsigned int jet) { if (not addTruth_) return 0; //default class - if (jetorigin_fromLLP[jet]<0.5) - { + // if (jetorigin_fromLLP[jet]<0.5) + // { if (jetorigin_isB[jet]>0.5) return 0; if (jetorigin_isBB[jet]>0.5) return 1; if (jetorigin_isGBB[jet]>0.5) return 2; @@ -777,11 +1330,26 @@ class NanoXTree if (jetorigin_isUD[jet]>0.5) return 9; if (jetorigin_isG[jet]>0.5) return 10; if (jetorigin_isPU[jet]>0.5) return 12; - } - else + if (jetorigin_isLLP_RAD[jet]>0.5) return 13 ; + if (jetorigin_isLLP_MU[jet]>0.5) return 14 ; + if (jetorigin_isLLP_E[jet]>0.5) return 15; + if (jetorigin_isLLP_Q[jet]>0.5) return 16; + if (jetorigin_isLLP_QMU[jet]>0.5) return 17; + if (jetorigin_isLLP_QE[jet]>0.5) return 18; + if (jetorigin_isLLP_QQ[jet]>0.5) return 19; + if (jetorigin_isLLP_QQMU[jet]>0.5) return 20; + if (jetorigin_isLLP_QQE[jet]>0.5) return 21; + if (jetorigin_isLLP_B[jet]>0.5) return 22; + if (jetorigin_isLLP_BMU[jet]>0.5) return 23; + if (jetorigin_isLLP_BE[jet]>0.5) return 24; + if (jetorigin_isLLP_BB[jet]>0.5) return 25; + if (jetorigin_isLLP_BBMU[jet]>0.5) return 26; + if (jetorigin_isLLP_BBE[jet]>0.5) return 27; + // } + /* else { return 11; - } + }*/ return -1; } @@ -792,12 +1360,12 @@ class NanoXTree { //tree_->GetEntry(entry); - if (this->njets()!=ncpflength or this->njets()!=nnpflength or this->njets()!=nsvlength) + if (this->njets()!=length_cpf or this->njets()!=nnpflength or this->njets()!=nsvlength) { std::cout<<"Encountered weird event with unclear numbers of jets"<> unpackedTreesTrain; - std::vector> eventsPerClassPerFileTrain(13,std::vector(nOutputs,0)); + std::vector> eventsPerClassPerFileTrain(28,std::vector(nOutputs,0)); std::vector> unpackedTreesTest; - std::vector> eventsPerClassPerFileTest(13,std::vector(nOutputs,0)); + std::vector> eventsPerClassPerFileTest(28,std::vector(nOutputs,0)); for (unsigned int i = 0; i < nOutputs; ++i) { From a28d492f448093f75b9a53bba4005352b9cc9468 Mon Sep 17 00:00:00 2001 From: Haifa Rejeb Sfar Date: Mon, 27 Jan 2020 02:36:17 +0100 Subject: [PATCH 2/3] fixing Unpacker --- Unpacker/unpackNanoXFast.cc | 1936 ++++++++++++++++++++++------------- 1 file changed, 1250 insertions(+), 686 deletions(-) diff --git a/Unpacker/unpackNanoXFast.cc b/Unpacker/unpackNanoXFast.cc index 26317a2..d90d6ff 100644 --- a/Unpacker/unpackNanoXFast.cc +++ b/Unpacker/unpackNanoXFast.cc @@ -15,59 +15,6 @@ #include "cmdParser.hpp" #include "exprtk.hpp" - -/*template -void print(A a, ARGS ... args) -{ - std::cout<(args); -} - -template -void print(A a) {std::cout< -class FillerScalar -{ - IN buffer[NINPUT]; - OUT buffer; - - public: - FillerScalar(const std::string& name, const std::string& inputLength) - { - } - - void bookBranch(TTree* tree) - { - tree->TBranch(name.c_str()) ; - - - } -}; - - -template -class FillerVector -{ - IN buffer[NINPUT]; - OUT buffer[NOUT]; - - public: - FillerVector(const std::string& name , const std::string& inputLength, const std::string& outputLength) - { - } - - void bookBranch(TTree* tree) - { - tree->TBranch(name.c_str()) ; - - - } -}; -Filler<1,int,float> -Filler<1,float>*/ class UnpackedTree { @@ -77,63 +24,62 @@ class UnpackedTree TTree* tree_; - static constexpr int maxEntries = 25; - static constexpr int bufferSize = 64000; //default is 32kB - + static constexpr int maxEntries_cpf = 25; + static constexpr int maxEntries_npf = 25; + static constexpr int maxEntries_sv = 4; + static constexpr int maxEntries_muon = 2; + static constexpr int maxEntries_electron = 2; + static constexpr int bufferSize = 64000; //default is 32kB - unsigned int jetorigin_isPU; - unsigned int jetorigin_isB; - unsigned int jetorigin_isBB; - unsigned int jetorigin_isGBB; - unsigned int jetorigin_isLeptonic_B; - unsigned int jetorigin_isLeptonic_C; - unsigned int jetorigin_isC; - unsigned int jetorigin_isCC; - unsigned int jetorigin_isGCC; - unsigned int jetorigin_isS; - unsigned int jetorigin_isUD; - unsigned int jetorigin_isG; - //unsigned int jetorigin_fromLLP; + float jetorigin_isPU; + float jetorigin_isB; + float jetorigin_isBB; + float jetorigin_isGBB; + float jetorigin_isLeptonic_B; + float jetorigin_isLeptonic_C; + float jetorigin_isC; + float jetorigin_isCC; + float jetorigin_isGCC; + float jetorigin_isS; + float jetorigin_isUD; + float jetorigin_isG; //Include LLP flavour : - unsigned int jetorigin_isLLP_RAD; //no flavour match (likely from wide angle radiation) - unsigned int jetorigin_isLLP_MU; //prompt lepton - unsigned int jetorigin_isLLP_E; //prompt lepton - unsigned int jetorigin_isLLP_Q; //single light quark - unsigned int jetorigin_isLLP_QMU; //single light quark + prompt lepton - unsigned int jetorigin_isLLP_QE; //single light quark + prompt lepton - unsigned int jetorigin_isLLP_QQ; //double light quark - unsigned int jetorigin_isLLP_QQMU; //double light quark + prompt lepton - unsigned int jetorigin_isLLP_QQE; //double light quark + prompt lepton - unsigned int jetorigin_isLLP_B; //single b/c quark - unsigned int jetorigin_isLLP_BMU; //single b/c quark + prompt lepton - unsigned int jetorigin_isLLP_BE; //single b/c quark + prompt lepton - unsigned int jetorigin_isLLP_BB; //double b/c quark - unsigned int jetorigin_isLLP_BBMU; //double b/c quark + prompt lepton - unsigned int jetorigin_isLLP_BBE; //double b/c quark + prompt lepton - unsigned int jetorigin_isUndefined; + float jetorigin_isLLP_RAD; //no flavour match (likely from wide angle radiation) + float jetorigin_isLLP_MU; //prompt lepton + float jetorigin_isLLP_E; //prompt lepton + float jetorigin_isLLP_Q; //single light quark + float jetorigin_isLLP_QMU; //single light quark + prompt lepton + float jetorigin_isLLP_QE; //single light quark + prompt lepton + float jetorigin_isLLP_QQ; //double light quark + float jetorigin_isLLP_QQMU; //double light quark + prompt lepton + float jetorigin_isLLP_QQE; //double light quark + prompt lepton + float jetorigin_isLLP_B; //single b/c quark + float jetorigin_isLLP_BMU; //single b/c quark + prompt lepton + float jetorigin_isLLP_BE; //single b/c quark + prompt lepton + float jetorigin_isLLP_BB; //double b/c quark + float jetorigin_isLLP_BBMU; //double b/c quark + prompt lepton + float jetorigin_isLLP_BBE; //double b/c quark + prompt lepton + float jetorigin_isUndefined; float jetorigin_displacement; -// float jetorigin_ctau; float jetorigin_decay_angle; - float jetorigin_displacement_xy; - float jetorigin_displacement_z ; - float jetorigin_betagamma; - int jetorigin_jetIdx; - int jetorigin_partonFlavor; - int jetorigin_hadronFlavor; - int jetorigin_llpId; - float jetorigin_llp_mass; - float jetorigin_llp_pt; + float jetorigin_displacement_xy; + float jetorigin_displacement_z ; + float jetorigin_ctau; + float jetorigin_betagamma; + float jetorigin_partonFlavor; + float jetorigin_hadronFlavor; + float jetorigin_llpId; + float jetorigin_llp_mass; + float jetorigin_llp_pt; //unsigned int nglobal; float global_pt; float global_eta; - float global_rho; - float global_mass; -// float global_energy; - int global_n60; - int global_n90; + float global_mass; + float global_n60; + float global_n90; float global_chargedEmEnergyFraction; float global_chargedHadronEnergyFraction; float global_chargedMuEnergyFraction; @@ -154,34 +100,6 @@ class UnpackedTree float global_isotropy; float global_eventShapeC; float global_eventShapeD; - - float isData; - float xsecweight; - float processId; - - unsigned int ncpf; - float cpf_trackEtaRel[maxEntries]; - float cpf_trackPtRel[maxEntries]; - float cpf_trackPPar[maxEntries]; - float cpf_trackDeltaR[maxEntries]; - float cpf_trackPtRatio[maxEntries]; - float cpf_trackPParRatio[maxEntries]; - float cpf_trackSip2dVal[maxEntries]; - float cpf_trackSip2dSig[maxEntries]; - float cpf_trackSip3dVal[maxEntries]; - float cpf_trackSip3dSig[maxEntries]; - float cpf_trackJetDistVal[maxEntries]; - float cpf_trackJetDistSig[maxEntries]; - float cpf_ptrel[maxEntries]; - float cpf_drminsv[maxEntries]; - float cpf_vertex_association[maxEntries]; - float cpf_fromPV[maxEntries]; - float cpf_puppi_weight[maxEntries]; - float cpf_track_chi2[maxEntries]; - float cpf_track_ndof[maxEntries]; - float cpf_track_quality[maxEntries]; - float cpf_relmassdrop[maxEntries]; -// float cpf_relIso01[maxEntries]; float csv_trackSumJetEtRatio; float csv_trackSumJetDeltaR; @@ -192,101 +110,251 @@ class UnpackedTree float csv_trackSip3dSigAboveCharm; float csv_jetNSelectedTracks; float csv_jetNTracksEtaRel; + + float isData; + float xsecweight; + float processId; + + unsigned int ncpf; + float cpf_trackEtaRel[maxEntries_cpf]; + float cpf_trackPtRel[maxEntries_cpf]; + float cpf_trackPPar[maxEntries_cpf]; + float cpf_trackDeltaR[maxEntries_cpf]; + float cpf_trackPtRatio[maxEntries_cpf]; + float cpf_trackPParRatio[maxEntries_cpf]; + float cpf_trackSip2dVal[maxEntries_cpf]; + float cpf_trackSip2dSig[maxEntries_cpf]; + float cpf_trackSip3dVal[maxEntries_cpf]; + float cpf_trackSip3dSig[maxEntries_cpf]; + float cpf_trackJetDistVal[maxEntries_cpf]; + float cpf_trackJetDistSig[maxEntries_cpf]; + float cpf_ptrel[maxEntries_cpf]; + float cpf_deta[maxEntries_cpf]; + float cpf_dphi[maxEntries_cpf]; + float cpf_drminsv[maxEntries_cpf]; + float cpf_vertex_association[maxEntries_cpf]; + float cpf_fromPV[maxEntries_cpf]; + float cpf_puppi_weight[maxEntries_cpf]; + float cpf_track_chi2[maxEntries_cpf]; + float cpf_track_ndof[maxEntries_cpf]; + float cpf_track_quality[maxEntries_cpf]; + float cpf_relmassdrop[maxEntries_cpf]; + + float cpf_matchedSV[maxEntries_cpf]; + float cpf_matchedMuon[maxEntries_cpf]; + float cpf_matchedElectron[maxEntries_cpf]; unsigned int nnpf; - float npf_ptrel[maxEntries]; - float npf_deltaR[maxEntries]; - float npf_isGamma[maxEntries]; - float npf_hcal_fraction[maxEntries]; - float npf_drminsv[maxEntries]; - float npf_puppi_weight[maxEntries]; - float npf_relmassdrop[maxEntries]; - float npf_relIso01[maxEntries]; + float npf_ptrel[maxEntries_npf]; + float npf_deta[maxEntries_npf]; + float npf_dphi[maxEntries_npf]; + float npf_deltaR[maxEntries_npf]; + float npf_isGamma[maxEntries_npf]; + float npf_hcal_fraction[maxEntries_npf]; + float npf_drminsv[maxEntries_npf]; + float npf_puppi_weight[maxEntries_npf]; + float npf_relmassdrop[maxEntries_npf]; unsigned int nsv; - float sv_pt[maxEntries]; - float sv_mass[maxEntries]; - float sv_deltaR[maxEntries]; - float sv_ntracks[maxEntries]; - float sv_chi2[maxEntries]; - float sv_ndof[maxEntries]; - float sv_dxy[maxEntries]; - float sv_dxysig[maxEntries]; - float sv_d3d[maxEntries]; - float sv_d3dsig[maxEntries]; - float sv_costhetasvpv[maxEntries]; - float sv_enratio[maxEntries]; - - -// add muons variables : -// - - - unsigned int nmu; - float muon_jetIdx[maxEntries] ; - float muon_isGlobal[maxEntries] ; - float muon_isTight[maxEntries] ; - float muon_isMedium[maxEntries] ; - float muon_isLoose[maxEntries] ; - float muon_isStandAlone[maxEntries] ; - - - float muon_ptrel [maxEntries]; - float muon_EtaRel[maxEntries]; - float muon_phi[maxEntries]; - float muon_charge [maxEntries]; - float muon_energy[maxEntries]; -// float muon_et [maxEntries]; - float muon_jetDeltaR [maxEntries]; - float muon_numberOfMatchedStations [maxEntries]; - - float muon_2dIp [maxEntries]; - float muon_2dIpSig [maxEntries]; - float muon_3dIp [maxEntries]; - float muon_3dIpSig [maxEntries]; - - float muon_dxy [maxEntries]; - float muon_dxyError [maxEntries]; - float muon_dxySig [maxEntries]; - float muon_dz [maxEntries]; - float muon_dzError [maxEntries]; - float muon_numberOfValidPixelHits[maxEntries]; - float muon_numberOfpixelLayersWithMeasurement [maxEntries]; -// float muon_numberOfstripLayersWithMeasurement [maxEntries]; //that does not help. needs to be discussed. - - float muon_chi2 [maxEntries]; - float muon_ndof [maxEntries]; - - float muon_caloIso [maxEntries]; - float muon_ecalIso [maxEntries]; - float muon_hcalIso [maxEntries]; - - float muon_sumPfChHadronPt [maxEntries]; - float muon_sumPfNeuHadronEt [maxEntries]; - float muon_Pfpileup [maxEntries]; - float muon_sumPfPhotonEt [maxEntries]; - - float muon_sumPfChHadronPt03 [maxEntries]; - float muon_sumPfNeuHadronEt03 [maxEntries]; - float muon_Pfpileup03 [maxEntries]; - float muon_sumPfPhotonEt03 [maxEntries]; - - float muon_sumChHadronPt [maxEntries]; - float muon_sumNeuHadronEt [maxEntries]; - float muon_pileup [maxEntries]; - float muon_sumPhotonEt [maxEntries]; - - float muon_timeAtIpInOut [maxEntries]; - float muon_timeAtIpInOutErr [maxEntries]; - float muon_timeAtIpOutIn [maxEntries]; - - unsigned int nelec; - -/* unsigned int nlegacyTag; - float legacyTag_median_dxy; - float legacyTag_median_trackSip2dSig; - float legacyTag_alpha;*/ + float sv_ptrel[maxEntries_sv]; + float sv_deta[maxEntries_sv]; + float sv_dphi[maxEntries_sv]; + float sv_mass[maxEntries_sv]; + float sv_deltaR[maxEntries_sv]; + float sv_ntracks[maxEntries_sv]; + float sv_chi2[maxEntries_sv]; + float sv_ndof[maxEntries_sv]; + float sv_dxy[maxEntries_sv]; + float sv_dxysig[maxEntries_sv]; + float sv_d3d[maxEntries_sv]; + float sv_d3dsig[maxEntries_sv]; + float sv_costhetasvpv[maxEntries_sv]; + float sv_enratio[maxEntries_sv]; + + unsigned int nmuon; + float muon_isGlobal[maxEntries_muon] ; + float muon_isTight[maxEntries_muon] ; + float muon_isMedium[maxEntries_muon] ; + float muon_isLoose[maxEntries_muon] ; + float muon_isStandAlone[maxEntries_muon] ; + + float muon_ptrel [maxEntries_muon]; + float muon_EtaRel[maxEntries_muon]; + float muon_dphi[maxEntries_muon]; + float muon_deta[maxEntries_muon]; + float muon_charge [maxEntries_muon]; + float muon_energy[maxEntries_muon]; + float muon_jetDeltaR [maxEntries_muon]; + float muon_numberOfMatchedStations [maxEntries_muon]; + + float muon_2dIp [maxEntries_muon]; + float muon_2dIpSig [maxEntries_muon]; + float muon_3dIp [maxEntries_muon]; + float muon_3dIpSig [maxEntries_muon]; + + float muon_dxy [maxEntries_muon]; + float muon_dxyError [maxEntries_muon]; + float muon_dxySig [maxEntries_muon]; + float muon_dz [maxEntries_muon]; + float muon_dzError [maxEntries_muon]; + float muon_numberOfValidPixelHits[maxEntries_muon]; + float muon_numberOfpixelLayersWithMeasurement [maxEntries_muon]; + + float muon_chi2 [maxEntries_muon]; + float muon_ndof [maxEntries_muon]; + + float muon_caloIso [maxEntries_muon]; + float muon_ecalIso [maxEntries_muon]; + float muon_hcalIso [maxEntries_muon]; + + float muon_sumPfChHadronPt [maxEntries_muon]; + float muon_sumPfNeuHadronEt [maxEntries_muon]; + float muon_Pfpileup [maxEntries_muon]; + float muon_sumPfPhotonEt [maxEntries_muon]; + + float muon_sumPfChHadronPt03 [maxEntries_muon]; + float muon_sumPfNeuHadronEt03 [maxEntries_muon]; + float muon_Pfpileup03 [maxEntries_muon]; + float muon_sumPfPhotonEt03 [maxEntries_muon]; + + float muon_sumChHadronPt [maxEntries_muon]; + float muon_sumNeuHadronEt [maxEntries_muon]; + float muon_pileup [maxEntries_muon]; + float muon_sumPhotonEt [maxEntries_muon]; + + float muon_timeAtIpInOut [maxEntries_muon]; + float muon_timeAtIpInOutErr [maxEntries_muon]; + float muon_timeAtIpOutIn [maxEntries_muon]; + + unsigned int nelectron; + int electron_jetIdx[maxEntries_electron]; + float electron_ptrel[maxEntries_electron]; + float electron_jetDeltaR[maxEntries_electron]; + float electron_deta[maxEntries_electron]; + float electron_dphi[maxEntries_electron]; + float electron_charge[maxEntries_electron]; + float electron_energy[maxEntries_electron]; + float electron_EtFromCaloEn[maxEntries_electron]; + float electron_isEB[maxEntries_electron]; + float electron_isEE[maxEntries_electron]; + float electron_ecalEnergy[maxEntries_electron]; + float electron_isPassConversionVeto[maxEntries_electron]; + float electron_convDist[maxEntries_electron]; + int electron_convFlags[maxEntries_electron]; + float electron_convRadius[maxEntries_electron]; + float electron_hadronicOverEm[maxEntries_electron]; + float electron_ecalDrivenSeed[maxEntries_electron]; + + // superCluster block + + float electron_SC_energy[maxEntries_electron]; + float electron_SC_deta[maxEntries_electron]; + float electron_SC_dphi[maxEntries_electron]; + float electron_SC_et[maxEntries_electron]; + float electron_SC_eSuperClusterOverP[maxEntries_electron]; + float electron_scE1x5Overe5x5[maxEntries_electron]; + float electron_scE2x5MaxOvere5x5[maxEntries_electron]; + float electron_scE5x5[maxEntries_electron]; + float electron_scE5x5Rel[maxEntries_electron]; + float electron_scPixCharge[maxEntries_electron]; + float electron_scSigmaEtaEta[maxEntries_electron]; + float electron_scSigmaIEtaIEta[maxEntries_electron]; + float electron_superClusterFbrem[maxEntries_electron]; + + float electron_2dIP[maxEntries_electron]; + float electron_2dIPSig[maxEntries_electron]; + float electron_3dIP[maxEntries_electron]; + float electron_3dIPSig[maxEntries_electron]; + float electron_eSeedClusterOverP[maxEntries_electron]; + float electron_eSeedClusterOverPout[maxEntries_electron]; + float electron_eSuperClusterOverP[maxEntries_electron]; + float electron_eTopOvere5x5[maxEntries_electron]; + + float electron_deltaEtaEleClusterTrackAtCalo[maxEntries_electron]; + float electron_deltaEtaSeedClusterTrackAtCalo[maxEntries_electron]; + float electron_deltaPhiSeedClusterTrackAtCalo[maxEntries_electron]; + float electron_deltaEtaSeedClusterTrackAtVtx[maxEntries_electron]; + float electron_deltaEtaSuperClusterTrackAtVtx[maxEntries_electron]; + float electron_deltaPhiEleClusterTrackAtCalo[maxEntries_electron]; + float electron_deltaPhiSuperClusterTrackAtVtx[maxEntries_electron]; + float electron_sCseedEta[maxEntries_electron]; + + // electron gsf variables. + float electron_EtaRel[maxEntries_electron]; + float electron_dxy[maxEntries_electron]; + float electron_dz[maxEntries_electron]; + float electron_nbOfMissingHits[maxEntries_electron]; + float electron_gsfCharge[maxEntries_electron]; + + + int electron_numberOfBrems[maxEntries_electron]; + float electron_trackFbrem[maxEntries_electron]; + float electron_fbrem[maxEntries_electron]; + float electron_e5x5[maxEntries_electron]; + float electron_e5x5Rel[maxEntries_electron]; + float electron_e1x5Overe5x5[maxEntries_electron]; + float electron_e2x5MaxOvere5x5[maxEntries_electron]; + + // 5*5 cells cluster + // + + float electron_full5x5_e5x5[maxEntries_electron]; + float electron_full5x5_e5x5Rel[maxEntries_electron]; + float electron_full5x5_sigmaIetaIeta[maxEntries_electron]; + float electron_full5x5_e1x5Overe5x5[maxEntries_electron]; + float electron_full5x5_e2x5BottomOvere5x5[maxEntries_electron]; + float electron_full5x5_e2x5LeftOvere5x5[maxEntries_electron]; + float electron_full5x5_e2x5MaxOvere5x5[maxEntries_electron]; + float electron_full5x5_e2x5RightOvere5x5[maxEntries_electron]; + float electron_full5x5_e2x5TopOvere5x5[maxEntries_electron]; + + + + float electron_full5x5_eBottomOvere5x5[maxEntries_electron]; + float electron_full5x5_eLeftOvere5x5[maxEntries_electron]; + float electron_full5x5_eRightOvere5x5[maxEntries_electron]; + float electron_full5x5_eTopOvere5x5[maxEntries_electron]; + float electron_full5x5_hcalDepth1OverEcal[maxEntries_electron]; + float electron_full5x5_hcalDepth1OverEcalBc[maxEntries_electron]; + float electron_full5x5_hcalDepth2OverEcal[maxEntries_electron]; + float electron_full5x5_hcalDepth2OverEcalBc[maxEntries_electron]; + float electron_full5x5_hcalOverEcal[maxEntries_electron]; + float electron_full5x5_hcalOverEcalBc[maxEntries_electron]; + float electron_full5x5_r9[maxEntries_electron]; + + + + // Isolation block + float electron_neutralHadronIso[maxEntries_electron]; + float electron_particleIso [maxEntries_electron]; + float electron_photonIso[maxEntries_electron]; + float electron_puChargedHadronIso[maxEntries_electron]; + float electron_trackIso[maxEntries_electron]; + float electron_hcalDepth1OverEcal[maxEntries_electron]; + float electron_hcalDepth2OverEcal[maxEntries_electron]; + float electron_ecalPFClusterIso[maxEntries_electron]; + float electron_hcalPFClusterIso[maxEntries_electron]; + float electron_dr03TkSumPt[maxEntries_electron]; + + float electron_dr03EcalRecHitSumEt[maxEntries_electron]; + float electron_dr03HcalDepth1TowerSumEt[maxEntries_electron]; + float electron_dr03HcalDepth1TowerSumEtBc[maxEntries_electron]; + float electron_dr03HcalDepth2TowerSumEt[maxEntries_electron]; + float electron_dr03HcalDepth2TowerSumEtBc[maxEntries_electron]; + float electron_pfSumPhotonEt[maxEntries_electron]; + float electron_pfSumChargedHadronPt[maxEntries_electron]; + float electron_pfSumNeutralHadronEt[maxEntries_electron]; + float electron_pfSumPUPt[maxEntries_electron]; + + float electron_dr04EcalRecHitSumEt[maxEntries_electron]; + float electron_dr04HcalDepth1TowerSumEt[maxEntries_electron]; + float electron_dr04HcalDepth1TowerSumEtBc[maxEntries_electron]; + float electron_dr04HcalDepth2TowerSumEt[maxEntries_electron]; + float electron_dr04HcalDepth2TowerSumEtBc [maxEntries_electron]; + float electron_dr04HcalTowerSumEt[maxEntries_electron]; + float electron_dr04HcalTowerSumEtBc[maxEntries_electron]; + public: UnpackedTree(const std::string& fileName, bool addTruth=true): addTruth_(addTruth), @@ -299,49 +367,49 @@ class UnpackedTree if (addTruth) { - tree_->Branch("jetorigin_isPU",&jetorigin_isPU,"jetorigin_isPU/I",bufferSize); - tree_->Branch("jetorigin_isB",&jetorigin_isB,"jetorigin_isB/I",bufferSize); - tree_->Branch("jetorigin_isBB",&jetorigin_isBB,"jetorigin_isBB/I",bufferSize); - tree_->Branch("jetorigin_isGBB",&jetorigin_isGBB,"jetorigin_isGBB/I",bufferSize); - tree_->Branch("jetorigin_isLeptonic_B",&jetorigin_isLeptonic_B,"jetorigin_isLeptonic_B/I",bufferSize); - tree_->Branch("jetorigin_isLeptonic_C",&jetorigin_isLeptonic_C,"jetorigin_isLeptonic_C/I",bufferSize); - tree_->Branch("jetorigin_isC",&jetorigin_isC,"jetorigin_isC/I",bufferSize); - tree_->Branch("jetorigin_isCC",&jetorigin_isCC,"jetorigin_isCC/I",bufferSize); - tree_->Branch("jetorigin_isGCC",&jetorigin_isGCC,"jetorigin_isGCC/I",bufferSize); - tree_->Branch("jetorigin_isS",&jetorigin_isS,"jetorigin_isS/I",bufferSize); - tree_->Branch("jetorigin_isUD",&jetorigin_isUD,"jetorigin_isUD/I",bufferSize); - tree_->Branch("jetorigin_isG",&jetorigin_isG,"jetorigin_isG/I",bufferSize); - //Add LLP flavour : - tree_->Branch("jetorigin_isLLP_RAD",&jetorigin_isLLP_RAD , "jetorigin_isLLP_RAD/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_MU",&jetorigin_isLLP_MU , "jetorigin_isLLP_MU/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_E",&jetorigin_isLLP_E , "jetorigin_isLLP_E/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_Q",&jetorigin_isLLP_Q , "jetorigin_isLLP_Q/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_QMU",&jetorigin_isLLP_QMU, "jetorigin_isLLP_QMU/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_QE",&jetorigin_isLLP_QE , "jetorigin_isLLP_QE/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_QQ",&jetorigin_isLLP_QQ , "jetorigin_isLLP_QQ/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_QQMU",&jetorigin_isLLP_QQMU ,"jetorigin_isLLP_QQMU/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE , "jetorigin_isLLP_QQE/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE ,"jetorigin_isLLP_QQE/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_BMU",&jetorigin_isLLP_BMU , "jetorigin_isLLP_BMU/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_BE",&jetorigin_isLLP_BE ,"jetorigin_isLLP_BE/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_BB",&jetorigin_isLLP_BB, "jetorigin_isLLP_BB/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_BBMU",&jetorigin_isLLP_BBMU , "jetorigin_isLLP_BBMU/I", bufferSize) ; - tree_->Branch("jetorigin_isLLP_BBE",&jetorigin_isLLP_BBE , "jetorigin_isLLP_BBE", bufferSize) ; - - //tree_->Branch("jetorigin_fromLLP",&jetorigin_fromLLP,"jetorigin_fromLLP/I",bufferSize); - tree_->Branch("jetorigin_isUndefined",&jetorigin_isUndefined,"jetorigin_isUndefined/I",bufferSize); + tree_->Branch("jetorigin_isPU",&jetorigin_isPU,"jetorigin_isPU/F",bufferSize); + tree_->Branch("jetorigin_isB",&jetorigin_isB,"jetorigin_isB/F",bufferSize); + tree_->Branch("jetorigin_isBB",&jetorigin_isBB,"jetorigin_isBB/F",bufferSize); + tree_->Branch("jetorigin_isGBB",&jetorigin_isGBB,"jetorigin_isGBB/F",bufferSize); + tree_->Branch("jetorigin_isLeptonic_B",&jetorigin_isLeptonic_B,"jetorigin_isLeptonic_B/F",bufferSize); + tree_->Branch("jetorigin_isLeptonic_C",&jetorigin_isLeptonic_C,"jetorigin_isLeptonic_C/F",bufferSize); + tree_->Branch("jetorigin_isC",&jetorigin_isC,"jetorigin_isC/F",bufferSize); + tree_->Branch("jetorigin_isCC",&jetorigin_isCC,"jetorigin_isCC/F",bufferSize); + tree_->Branch("jetorigin_isGCC",&jetorigin_isGCC,"jetorigin_isGCC/F",bufferSize); + tree_->Branch("jetorigin_isS",&jetorigin_isS,"jetorigin_isS/F",bufferSize); + tree_->Branch("jetorigin_isUD",&jetorigin_isUD,"jetorigin_isUD/F",bufferSize); + tree_->Branch("jetorigin_isG",&jetorigin_isG,"jetorigin_isG/F",bufferSize); + + //Add LLP flavour : + tree_->Branch("jetorigin_isLLP_RAD",&jetorigin_isLLP_RAD , "jetorigin_isLLP_RAD/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_MU",&jetorigin_isLLP_MU , "jetorigin_isLLP_MU/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_E",&jetorigin_isLLP_E , "jetorigin_isLLP_E/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_Q",&jetorigin_isLLP_Q , "jetorigin_isLLP_Q/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QMU",&jetorigin_isLLP_QMU, "jetorigin_isLLP_QMU/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QE",&jetorigin_isLLP_QE , "jetorigin_isLLP_QE/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQ",&jetorigin_isLLP_QQ , "jetorigin_isLLP_QQ/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQMU",&jetorigin_isLLP_QQMU ,"jetorigin_isLLP_QQMU/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE , "jetorigin_isLLP_QQE/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE ,"jetorigin_isLLP_QQE/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BMU",&jetorigin_isLLP_BMU , "jetorigin_isLLP_BMU/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BE",&jetorigin_isLLP_BE ,"jetorigin_isLLP_BE/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BB",&jetorigin_isLLP_BB, "jetorigin_isLLP_BB/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BBMU",&jetorigin_isLLP_BBMU , "jetorigin_isLLP_BBMU/F", bufferSize) ; + tree_->Branch("jetorigin_isLLP_BBE",&jetorigin_isLLP_BBE , "jetorigin_isLLP_BBE/F", bufferSize) ; + + tree_->Branch("jetorigin_isUndefined",&jetorigin_isUndefined,"jetorigin_isUndefined/F",bufferSize); + tree_->Branch("jetorigin_displacement",&jetorigin_displacement,"jetorigin_displacement/F",bufferSize); - //tree_->Branch("jetorigin_ctau",&jetorigin_ctau,"jetorigin_ctau/F",bufferSize); tree_->Branch("jetorigin_decay_angle",&jetorigin_decay_angle,"jetorigin_decay_angle/F",bufferSize); - tree_->Branch("jetorigin_displacement_xy" , &jetorigin_displacement_xy ,"jetorigin_decay_displacement_xy/F" , bufferSize); - tree_->Branch("jetorigin_displacement_z" , &jetorigin_displacement_z ,"jetorigin_displacement_z/F" ,bufferSize); - tree_->Branch("jetorigin_betagamma", &jetorigin_betagamma ,"jetorigin_betagamma/F" ,bufferSize); - tree_->Branch("jetorigin_jetIdx", &jetorigin_jetIdx , "jetorigin_jetIdx/F" , bufferSize ) ; - tree_->Branch("jetorigin_partonFlavor", &jetorigin_partonFlavor , "jetorigin_partonFlavor/I" , bufferSize ) ; - tree_->Branch("jetorigin_hadronFlavor", &jetorigin_hadronFlavor , "jetorigin_hadronFlavor/I" , bufferSize ) ; - tree_->Branch("jetorigin_llpId", &jetorigin_llpId , "jetorigin_llpId/I" , bufferSize ) ; - tree_->Branch("jetorigin_llp_mass", &jetorigin_llp_mass , "jetorigin_llp_mass/F" , bufferSize ) ; - tree_->Branch("jetorigin_llp_pt", &jetorigin_llp_pt , "jetorigin_llp_pt/F" , bufferSize ) ; + tree_->Branch("jetorigin_displacement_xy" , &jetorigin_displacement_xy ,"jetorigin_displacement_xy/F" , bufferSize); + tree_->Branch("jetorigin_displacement_z" , &jetorigin_displacement_z ,"jetorigin_displacement_z/F" ,bufferSize); + tree_->Branch("jetorigin_ctau" , &jetorigin_ctau ,"jetorigin_ctau/F" ,bufferSize); + tree_->Branch("jetorigin_betagamma", &jetorigin_betagamma ,"jetorigin_betagamma/F" ,bufferSize); + tree_->Branch("jetorigin_partonFlavor", &jetorigin_partonFlavor , "jetorigin_partonFlavor/F" , bufferSize ) ; + tree_->Branch("jetorigin_hadronFlavor", &jetorigin_hadronFlavor , "jetorigin_hadronFlavor/F" , bufferSize ) ; + tree_->Branch("jetorigin_llpId", &jetorigin_llpId , "jetorigin_llpId/F" , bufferSize ) ; + tree_->Branch("jetorigin_llp_mass", &jetorigin_llp_mass , "jetorigin_llp_mass/F" , bufferSize ) ; + tree_->Branch("jetorigin_llp_pt", &jetorigin_llp_pt , "jetorigin_llp_pt/F" , bufferSize ) ; } else { @@ -352,12 +420,10 @@ class UnpackedTree tree_->Branch("global_pt",&global_pt,"global_pt/F",bufferSize); tree_->Branch("global_eta",&global_eta,"global_eta/F",bufferSize); - tree_->Branch("global_rho",&global_rho,"global_rho/F",bufferSize); - tree_->Branch("global_mass",&global_mass,"global_mass/F", bufferSize); -// tree_->Branch("global_energy",&global_energy,"global_energy/F", bufferSize); - tree_->Branch("global_n60",&global_n60,"global_n60/I", bufferSize); - tree_->Branch("global_n90",&global_n90,"global_n90/I", bufferSize); + tree_->Branch("global_mass",&global_mass,"global_mass/F", bufferSize); + tree_->Branch("global_n60",&global_n60,"global_n60/F", bufferSize); + tree_->Branch("global_n90",&global_n90,"global_n90/F", bufferSize); tree_->Branch("global_chargedEmEnergyFraction",&global_chargedEmEnergyFraction,"global_chargedEmEnergyFraction/F", bufferSize); tree_->Branch("global_chargedHadronEnergyFraction",&global_chargedHadronEnergyFraction,"global_chargedHadronEnergyFraction/F", bufferSize); tree_->Branch("global_chargedMuEnergyFraction",&global_chargedMuEnergyFraction,"global_chargedMuEnergyFraction/F", bufferSize); @@ -378,6 +444,18 @@ class UnpackedTree tree_->Branch("global_isotropy",&global_isotropy,"global_isotropy/F", bufferSize); tree_->Branch("global_eventShapeC",&global_eventShapeC,"global_eventShapeC/F", bufferSize); tree_->Branch("global_eventShapeD",&global_eventShapeD ,"global_eventShapeD/F", bufferSize); + + + tree_->Branch("csv_trackSumJetEtRatio",&csv_trackSumJetEtRatio,"csv_trackSumJetEtRatio/F",bufferSize); + tree_->Branch("csv_trackSumJetDeltaR",&csv_trackSumJetDeltaR,"csv_trackSumJetDeltaR/F",bufferSize); + tree_->Branch("csv_vertexCategory",&csv_vertexCategory,"csv_vertexCategory/F",bufferSize); + tree_->Branch("csv_trackSip2dValAboveCharm",&csv_trackSip2dValAboveCharm,"csv_trackSip2dValAboveCharm/F",bufferSize); + tree_->Branch("csv_trackSip2dSigAboveCharm",&csv_trackSip2dSigAboveCharm,"csv_trackSip2dSigAboveCharm/F",bufferSize); + tree_->Branch("csv_trackSip3dValAboveCharm",&csv_trackSip3dValAboveCharm,"csv_trackSip3dValAboveCharm/F",bufferSize); + tree_->Branch("csv_trackSip3dSigAboveCharm",&csv_trackSip3dSigAboveCharm,"csv_trackSip3dSigAboveCharm/F",bufferSize); + tree_->Branch("csv_jetNSelectedTracks",&csv_jetNSelectedTracks,"csv_jetNSelectedTracks/F",bufferSize); + tree_->Branch("csv_jetNTracksEtaRel",&csv_jetNTracksEtaRel,"csv_jetNTracksEtaRel/F",bufferSize); + tree_->Branch("ncpf",&ncpf,"ncpf/I",bufferSize); tree_->Branch("cpf_trackEtaRel",&cpf_trackEtaRel,"cpf_trackEtaRel[ncpf]/F",bufferSize); @@ -393,6 +471,8 @@ class UnpackedTree tree_->Branch("cpf_trackJetDistVal",&cpf_trackJetDistVal,"cpf_trackJetDistVal[ncpf]/F",bufferSize); tree_->Branch("cpf_trackJetDistSig",&cpf_trackJetDistSig,"cpf_trackJetDistSig[ncpf]/F",bufferSize); tree_->Branch("cpf_ptrel",&cpf_ptrel,"cpf_ptrel[ncpf]/F",bufferSize); + tree_->Branch("cpf_deta",&cpf_deta,"cpf_deta[ncpf]/F",bufferSize); + tree_->Branch("cpf_dphi",&cpf_dphi,"cpf_dphi[ncpf]/F",bufferSize); tree_->Branch("cpf_drminsv",&cpf_drminsv,"cpf_drminsv[ncpf]/F",bufferSize); tree_->Branch("cpf_vertex_association",&cpf_vertex_association,"cpf_vertex_association[ncpf]/F",bufferSize); tree_->Branch("cpf_fromPV",&cpf_fromPV,"cpf_fromPV[ncpf]/F",bufferSize); @@ -401,30 +481,27 @@ class UnpackedTree tree_->Branch("cpf_track_ndof",&cpf_track_ndof,"cpf_track_ndof[ncpf]/F",bufferSize); tree_->Branch("cpf_track_quality",&cpf_track_quality,"cpf_track_quality[ncpf]/F",bufferSize); tree_->Branch("cpf_relmassdrop",&cpf_relmassdrop,"cpf_relmassdrop[ncpf]/F",bufferSize); -// tree_->Branch("cpf_relIso01",&cpf_relIso01,"cpf_relIso01[ncpf]/F",bufferSize); - tree_->Branch("csv_trackSumJetEtRatio",&csv_trackSumJetEtRatio,"csv_trackSumJetEtRatio/F",bufferSize); - tree_->Branch("csv_trackSumJetDeltaR",&csv_trackSumJetDeltaR,"csv_trackSumJetDeltaR/F",bufferSize); - tree_->Branch("csv_vertexCategory",&csv_vertexCategory,"csv_vertexCategory/F",bufferSize); - tree_->Branch("csv_trackSip2dValAboveCharm",&csv_trackSip2dValAboveCharm,"csv_trackSip2dValAboveCharm/F",bufferSize); - tree_->Branch("csv_trackSip2dSigAboveCharm",&csv_trackSip2dSigAboveCharm,"csv_trackSip2dSigAboveCharm/F",bufferSize); - tree_->Branch("csv_trackSip3dValAboveCharm",&csv_trackSip3dValAboveCharm,"csv_trackSip3dValAboveCharm/F",bufferSize); - tree_->Branch("csv_trackSip3dSigAboveCharm",&csv_trackSip3dSigAboveCharm,"csv_trackSip3dSigAboveCharm/F",bufferSize); - tree_->Branch("csv_jetNSelectedTracks",&csv_jetNSelectedTracks,"csv_jetNSelectedTracks/F",bufferSize); - tree_->Branch("csv_jetNTracksEtaRel",&csv_jetNTracksEtaRel,"csv_jetNTracksEtaRel/F",bufferSize); + tree_->Branch("cpf_matchedSV",&cpf_matchedSV,"cpf_matchedSV[ncpf]/F",bufferSize); + tree_->Branch("cpf_matchedMuon",&cpf_matchedMuon,"cpf_matchedMuon[ncpf]/F",bufferSize); + tree_->Branch("cpf_matchedElectron",&cpf_matchedElectron,"cpf_matchedElectron[ncpf]/F",bufferSize); + tree_->Branch("nnpf",&nnpf,"nnpf/I",bufferSize); tree_->Branch("npf_ptrel",&npf_ptrel,"npf_ptrel[nnpf]/F",bufferSize); + tree_->Branch("npf_deta",&npf_deta,"npf_deta[nnpf]/F",bufferSize); + tree_->Branch("npf_dphi",&npf_dphi,"npf_dphi[nnpf]/F",bufferSize); tree_->Branch("npf_deltaR",&npf_deltaR,"npf_deltaR[nnpf]/F",bufferSize); tree_->Branch("npf_isGamma",&npf_isGamma,"npf_isGamma[nnpf]/F",bufferSize); tree_->Branch("npf_hcal_fraction",&npf_hcal_fraction,"npf_hcal_fraction[nnpf]/F",bufferSize); tree_->Branch("npf_drminsv",&npf_drminsv,"npf_drminsv[nnpf]/F",bufferSize); tree_->Branch("npf_puppi_weight",&npf_puppi_weight,"npf_puppi_weight[nnpf]/F",bufferSize); tree_->Branch("npf_relmassdrop",&npf_relmassdrop,"npf_relmassdrop[nnpf]/F",bufferSize); - tree_->Branch("npf_relIso01",&npf_relIso01,"npf_relIso01[nnpf]/F",bufferSize); tree_->Branch("nsv",&nsv,"nsv/I",bufferSize); - tree_->Branch("sv_pt",&sv_pt,"sv_pt[nsv]/F",bufferSize); + tree_->Branch("sv_ptrel",&sv_ptrel,"sv_ptrel[nsv]/F",bufferSize); + tree_->Branch("sv_deta",&sv_deta,"sv_deta[nsv]/F",bufferSize); + tree_->Branch("sv_dphi",&sv_dphi,"sv_dphi[nsv]/F",bufferSize); tree_->Branch("sv_mass",&sv_deltaR,"sv_mass[nsv]/F",bufferSize); tree_->Branch("sv_deltaR",&sv_deltaR,"sv_deltaR[nsv]/F",bufferSize); tree_->Branch("sv_ntracks",&sv_ntracks,"sv_ntracks[nsv]/F",bufferSize); @@ -438,62 +515,185 @@ class UnpackedTree tree_->Branch("sv_enratio",&sv_enratio,"sv_enratio[nsv]/F",bufferSize); - tree_->Branch("nmu",&nmu,"nmu/I",bufferSize); - tree_->Branch("muon_jetIdx",&muon_jetIdx,"muon_jetIdx[nmu]/F",bufferSize); - tree_->Branch("muon_isGlobal",&muon_isGlobal, "muon_isGlobal[nmu]/F",bufferSize); - tree_->Branch("muon_isTight",&muon_isTight,"muon_isTight[nmu]/F",bufferSize); - tree_->Branch("muon_isMedium",&muon_isMedium,"muon_isMedium[nmu]/F",bufferSize); - tree_->Branch("muon_isLoose",&muon_isLoose,"muon_isLoose[nmu]/F",bufferSize); - tree_->Branch("muon_isStandAlone",&muon_isStandAlone,"muon_isStandAlone[nmu]/F",bufferSize); + tree_->Branch("nmuon",&nmuon,"nmuon/I",bufferSize); + tree_->Branch("muon_isGlobal",&muon_isGlobal, "muon_isGlobal[nmuon]/F",bufferSize); + tree_->Branch("muon_isTight",&muon_isTight,"muon_isTight[nmuon]/F",bufferSize); + tree_->Branch("muon_isMedium",&muon_isMedium,"muon_isMedium[nmuon]/F",bufferSize); + tree_->Branch("muon_isLoose",&muon_isLoose,"muon_isLoose[nmuon]/F",bufferSize); + tree_->Branch("muon_isStandAlone",&muon_isStandAlone,"muon_isStandAlone[nmuon]/F",bufferSize); - tree_->Branch("muon_ptrel", &muon_ptrel,"muon_ptrel[nmu]/F",bufferSize); - tree_->Branch("muon_EtaRel", &muon_EtaRel,"muon_EtaRel[nmu]/F",bufferSize); - tree_->Branch("muon_phi",&muon_phi,"muon_phi[nmu]/F",bufferSize); - tree_->Branch("muon_charge",&muon_charge,"muon_charge[nmu]/F",bufferSize); - tree_->Branch("muon_energy",&muon_energy,"muon_energy[nmu]/F",bufferSize); -// tree_->Branch("muon_et",&muon_et, "muon_et[nmu]/F",bufferSize); - tree_->Branch("muon_jetDeltaR",&muon_jetDeltaR,"muon_jetDeltaR[nmu]/F",bufferSize); - tree_->Branch("muon_numberOfMatchedStations",&muon_numberOfMatchedStations,"muon_numberOfMatchedStations[nmu]/F",bufferSize); - - tree_->Branch("muon_2dIp", &muon_2dIp,"muon_2dIp[nmu]/F",bufferSize); - tree_->Branch("muon_2dIpSig", &muon_2dIpSig, "muon_2dIpSi[nmu]/F",bufferSize); - tree_->Branch("muon_3dIp",&muon_3dIp,"muon_3dIp[nmu]/F",bufferSize); - tree_->Branch("muon_3dIpSig",&muon_3dIpSig,"muon_3dIpSig[nmu]/F",bufferSize); - - tree_->Branch("muon_dxy", &muon_dxy, "muon_dxy[nmu]/F",bufferSize); - tree_->Branch("muon_dxyError", &muon_dxyError,"muon_dxyError[nmu]/F",bufferSize); - tree_->Branch("muon_dxySig",&muon_dxySig,"muon_dxySig[nmu]/F",bufferSize); - tree_->Branch("muon_dz",&muon_dz, "muon_dz[nmu]/F",bufferSize); - tree_->Branch("muon_dzError", &muon_dzError,"muon_dzError[nmu]/F",bufferSize); - tree_->Branch("muon_numberOfValidPixelHits",&muon_numberOfValidPixelHits, "muon_numberOfValidPixelHits[nmu]/F",bufferSize); - tree_->Branch("muon_numberOfpixelLayersWithMeasurement", &muon_numberOfpixelLayersWithMeasurement, "muon_numberOfpixelLayersWithMeasurement[nmu]/F",bufferSize); -// tree_->Branch("muon_numberOfstripLayersWithMeasurement", &muon_numberOfstripLayersWithMeasurement, "muon_numberOfstripLayersWithMeasurement[nmu]/F",bufferSize); //that does not help. needs to be discussed. - - tree_->Branch("muon_chi2", &muon_chi2, "muon_chi2[nmu]/F",bufferSize); - tree_->Branch("muon_ndof",&muon_ndof, "muon_ndof[nmu]/F",bufferSize); - - tree_->Branch("muon_caloIso",&muon_caloIso,"muon_caloIso[nmu]/F",bufferSize); - tree_->Branch("muon_ecalIso",&muon_ecalIso,"muon_ecalIso[nmu]/F",bufferSize); - tree_->Branch("muon_hcalIso",&muon_hcalIso,"muon_hcalIso[nmu]/F",bufferSize); - - tree_->Branch("muon_sumPfChHadronPt",&muon_sumPfChHadronPt,"muon_sumPfChHadronPt[nmu]/F",bufferSize); - tree_->Branch("muon_sumPfNeuHadronEt",&muon_sumPfNeuHadronEt,"muon_sumPfNeuHadronEt[nmu]/F",bufferSize); - tree_->Branch("muon_Pfpileup",&muon_Pfpileup,"muon_Pfpileup[nmu]/F",bufferSize); - tree_->Branch("muon_sumPfPhotonEt",&muon_sumPfPhotonEt,"muon_sumPfPhotonEt[nmu]/F",bufferSize); - - tree_->Branch("muon_sumPfChHadronPt03",&muon_sumPfChHadronPt03, "muon_sumPfChHadronPt03[nmu]/F",bufferSize); - tree_->Branch("muon_sumPfNeuHadronEt03",&muon_sumPfNeuHadronEt03,"muon_sumPfNeuHadronEt03[nmu]/F",bufferSize); - tree_->Branch("muon_Pfpileup03",&muon_Pfpileup03,"muon_Pfpileup03[nmu]/F",bufferSize); - tree_->Branch("muon_sumPfPhotonEt03",&muon_sumPfPhotonEt03,"muon_sumPfPhotonEt03[nmu]/F",bufferSize); - - tree_->Branch("muon_sumChHadronPt",&muon_sumChHadronPt, "muon_sumChHadronPt[nmu]/F",bufferSize); - -/* tree_->Branch("nlegacyTag",&nlegacyTag,"nlegacyTag/I",bufferSize); - tree_->Branch("legacyTag_median_dxy",&legacyTag_median_dxy,"legacyTag_median_dxy/F",bufferSize); - tree_->Branch("legacyTag_median_trackSip2dSig",&legacyTag_median_trackSip2dSig,"legacyTag_median_trackSip2dSig/F",bufferSize); - tree_->Branch("legacyTag_alpha",&legacyTag_alpha,"legacyTag_alpha/F",bufferSize);*/ + tree_->Branch("muon_ptrel", &muon_ptrel,"muon_ptrel[nmuon]/F",bufferSize); + tree_->Branch("muon_EtaRel", &muon_EtaRel,"muon_EtaRel[nmuon]/F",bufferSize); + tree_->Branch("muon_dphi",&muon_dphi,"muon_dphi[nmuon]/F",bufferSize); + tree_->Branch("muon_deta",&muon_dphi,"muon_deta[nmuon]/F",bufferSize); + tree_->Branch("muon_charge",&muon_charge,"muon_charge[nmuon]/F",bufferSize); + tree_->Branch("muon_energy",&muon_energy,"muon_energy[nmuon]/F",bufferSize); + tree_->Branch("muon_jetDeltaR",&muon_jetDeltaR,"muon_jetDeltaR[nmuon]/F",bufferSize); + tree_->Branch("muon_numberOfMatchedStations",&muon_numberOfMatchedStations,"muon_numberOfMatchedStations[nmuon]/F",bufferSize); + + tree_->Branch("muon_2dIp", &muon_2dIp,"muon_2dIp[nmuon]/F",bufferSize); + tree_->Branch("muon_2dIpSig", &muon_2dIpSig, "muon_2dIpSi[nmuon]/F",bufferSize); + tree_->Branch("muon_3dIp",&muon_3dIp,"muon_3dIp[nmuon]/F",bufferSize); + tree_->Branch("muon_3dIpSig",&muon_3dIpSig,"muon_3dIpSig[nmuon]/F",bufferSize); + + tree_->Branch("muon_dxy", &muon_dxy, "muon_dxy[nmuon]/F",bufferSize); + tree_->Branch("muon_dxyError", &muon_dxyError,"muon_dxyError[nmuon]/F",bufferSize); + tree_->Branch("muon_dxySig",&muon_dxySig,"muon_dxySig[nmuon]/F",bufferSize); + tree_->Branch("muon_dz",&muon_dz, "muon_dz[nmuon]/F",bufferSize); + tree_->Branch("muon_dzError", &muon_dzError,"muon_dzError[nmuon]/F",bufferSize); + tree_->Branch("muon_numberOfValidPixelHits",&muon_numberOfValidPixelHits, "muon_numberOfValidPixelHits[nmuon]/F",bufferSize); + tree_->Branch("muon_numberOfpixelLayersWithMeasurement", &muon_numberOfpixelLayersWithMeasurement, "muon_numberOfpixelLayersWithMeasurement[nmuon]/F",bufferSize); + + + tree_->Branch("muon_chi2", &muon_chi2, "muon_chi2[nmuon]/F",bufferSize); + tree_->Branch("muon_ndof",&muon_ndof, "muon_ndof[nmuon]/F",bufferSize); + + tree_->Branch("muon_caloIso",&muon_caloIso,"muon_caloIso[nmuon]/F",bufferSize); + tree_->Branch("muon_ecalIso",&muon_ecalIso,"muon_ecalIso[nmuon]/F",bufferSize); + tree_->Branch("muon_hcalIso",&muon_hcalIso,"muon_hcalIso[nmuon]/F",bufferSize); + + tree_->Branch("muon_sumPfChHadronPt",&muon_sumPfChHadronPt,"muon_sumPfChHadronPt[nmuon]/F",bufferSize); + tree_->Branch("muon_sumPfNeuHadronEt",&muon_sumPfNeuHadronEt,"muon_sumPfNeuHadronEt[nmuon]/F",bufferSize); + tree_->Branch("muon_Pfpileup",&muon_Pfpileup,"muon_Pfpileup[nmuon]/F",bufferSize); + tree_->Branch("muon_sumPfPhotonEt",&muon_sumPfPhotonEt,"muon_sumPfPhotonEt[nmuon]/F",bufferSize); + + tree_->Branch("muon_sumPfChHadronPt03",&muon_sumPfChHadronPt03, "muon_sumPfChHadronPt03[nmuon]/F",bufferSize); + tree_->Branch("muon_sumPfNeuHadronEt03",&muon_sumPfNeuHadronEt03,"muon_sumPfNeuHadronEt03[nmuon]/F",bufferSize); + tree_->Branch("muon_Pfpileup03",&muon_Pfpileup03,"muon_Pfpileup03[nmuon]/F",bufferSize); + tree_->Branch("muon_sumPfPhotonEt03",&muon_sumPfPhotonEt03,"muon_sumPfPhotonEt03[nmuon]/F",bufferSize); + + tree_->Branch("muon_sumChHadronPt",&muon_sumChHadronPt, "muon_sumChHadronPt[nmuon]/F",bufferSize); + + tree_->Branch("nelectron",&nelectron,"nelectron/I",bufferSize); + tree_->Branch("electron_jetIdx",&electron_jetIdx,"electron_jetIdx/I",bufferSize); + tree_->Branch("electron_ptrel",&electron_ptrel,"electron_ptrel[nelectron]/F",bufferSize); + tree_->Branch("electron_jetDeltaR",&electron_jetDeltaR,"electron_jetDeltaR[nelectron]/F" ,bufferSize); + tree_->Branch("electron_deta",&electron_deta,"electron_deta[nelectron]/F",bufferSize); + tree_->Branch("electron_dphi",&electron_dphi,"electron_dphi[nelectron]/F",bufferSize); + tree_->Branch("electron_charge",&electron_charge,"electron_charge[nelectron]/F",bufferSize); + tree_->Branch("electron_energy",&electron_energy,"electron_energy[nelectron]/F",bufferSize); + tree_->Branch("electron_EtFromCaloEn",&electron_EtFromCaloEn,"electron_EtFromCaloEn[nelectron]/F",bufferSize); + tree_->Branch("electron_isEB",&electron_isEB,"electron_isEB[nelectron]/F", bufferSize); + tree_->Branch("electron_isEE",&electron_isEE,"electron_isEE[nelectron]/F",bufferSize); + tree_->Branch("electron_ecalEnergy",&electron_ecalEnergy,"electron_ecalEnergy[nelectron]/F",bufferSize); + tree_->Branch("electron_isPassConversionVeto", &electron_isPassConversionVeto, "electron_isPassConversionVeto[nelectron]/F" ,bufferSize); + tree_->Branch("electron_convDist",&electron_convDist,"electron_convDist[nelectron]" ,bufferSize); + tree_->Branch("electron_convFlags",&electron_convFlags,"electron_convFlags[nelectron]/I",bufferSize); + tree_->Branch("electron_convRadius",&electron_convRadius,"electron_convRadius[nelectron]/F",bufferSize); + tree_->Branch("electron_hadronicOverEm",&electron_hadronicOverEm,"electron_hadronicOverEm[nelectron]/F",bufferSize); + tree_->Branch("electron_ecalDrivenSeed",&electron_ecalDrivenSeed,"electron_ecalDrivenSeed[nelectron]/F",bufferSize); + + // superCluster block + + tree_->Branch("electron_SC_energy",&electron_SC_energy,"electron_SC_energy[nelectron]/F",bufferSize); + tree_->Branch("electron_SC_deta",&electron_SC_deta,"electron_SC_deta[nelectron]/F",bufferSize); + tree_->Branch("electron_SC_dphi",&electron_SC_dphi,"electron_SC_dphi[nelectron]/F",bufferSize); + tree_->Branch("electron_SC_et",&electron_SC_et,"electron_SC_et[nelectron]/F",bufferSize); + tree_->Branch("electron_SC_eSuperClusterOverP",&electron_SC_eSuperClusterOverP,"electron_SC_eSuperClusterOverP[nelectron]/F",bufferSize); + tree_->Branch("electron_scE1x5Overe5x5",&electron_scE1x5Overe5x5,"electron_scE1x5Overe5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_scE2x5MaxOvere5x5",&electron_scE2x5MaxOvere5x5,"electron_scE2x5MaxOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_scE5x5",&electron_scE5x5,"electron_scE5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_scE5x5Rel",&electron_scE5x5Rel,"electron_scE5x5Rel[nelectron]/F",bufferSize); + tree_->Branch("electron_scPixCharge",&electron_scPixCharge,"electron_scPixCharge[nelectron]/F",bufferSize); + tree_->Branch("electron_scSigmaEtaEta",&electron_scSigmaEtaEta,"electron_scSigmaEtaEta[nelectron]/F",bufferSize); + tree_->Branch("electron_scSigmaIEtaIEta",&electron_scSigmaIEtaIEta,"electron_scSigmaIEtaIEta[nelectron]/F",bufferSize); + tree_->Branch("electron_superClusterFbrem",&electron_superClusterFbrem,"electron_superClusterFbrem/F",bufferSize); + + tree_->Branch("electron_2dIP",&electron_2dIP,"electron_2dIP[nelectron]/F",bufferSize); + tree_->Branch("electron_2dIPSig",&electron_2dIPSig,"electron_2dIPSig[nelectron]/F",bufferSize); + tree_->Branch("electron_3dIP",&electron_3dIP,"electron_3dIP[nelectron]/F",bufferSize); + tree_->Branch("electron_3dIPSig",&electron_3dIPSig,"electron_3dIPSig[nelectron]/F",bufferSize); + tree_->Branch("electron_eSeedClusterOverP",&electron_eSeedClusterOverP,"electron_eSeedClusterOverP[nelectron]/F",bufferSize); + tree_->Branch("electron_eSeedClusterOverPout",&electron_eSeedClusterOverPout,"electron_eSeedClusterOverPout[nelectron]/F",bufferSize); + tree_->Branch("electron_eSuperClusterOverP",&electron_eSuperClusterOverP,"electron_eSuperClusterOverP[nelectron]/F",bufferSize); + tree_->Branch("electron_eTopOvere5x5",&electron_eTopOvere5x5,"electron_eTopOvere5x5[nelectron]/F",bufferSize); + + tree_->Branch("electron_deltaEtaEleClusterTrackAtCalo",&electron_deltaEtaEleClusterTrackAtCalo,"electron_deltaEtaEleClusterTrackAtCalo[nelectron]/F",bufferSize); + tree_->Branch("electron_deltaEtaSeedClusterTrackAtCalo",&electron_deltaEtaSeedClusterTrackAtCalo,"electron_deltaEtaSeedClusterTrackAtCalo[nelectron]/F",bufferSize); + tree_->Branch("electron_deltaPhiSeedClusterTrackAtCalo",&electron_deltaPhiSeedClusterTrackAtCalo,"electron_deltaPhiSeedClusterTrackAtCalo[nelectron]/F",bufferSize); + tree_->Branch("electron_deltaEtaSeedClusterTrackAtVtx",&electron_deltaPhiSeedClusterTrackAtCalo,"electron_deltaPhiSeedClusterTrackAtCalo[nelectron]/F",bufferSize); + tree_->Branch("electron_deltaEtaSuperClusterTrackAtVtx",&electron_deltaEtaSuperClusterTrackAtVtx,"electron_deltaEtaSuperClusterTrackAtVtx[nelectron]/F",bufferSize); + tree_->Branch("electron_deltaPhiEleClusterTrackAtCalo",&electron_deltaPhiEleClusterTrackAtCalo,"electron_deltaPhiEleClusterTrackAtCalo[nelectron]/F",bufferSize); + tree_->Branch("electron_deltaPhiSuperClusterTrackAtVtx",&electron_deltaPhiSuperClusterTrackAtVtx,"electron_deltaPhiSuperClusterTrackAtVtx[nelectron]/F",bufferSize); + tree_->Branch("electron_sCseedEta",&electron_sCseedEta,"electron_sCseedEta[nelectron]/F",bufferSize); + + // electron gsf variables. + tree_->Branch("electron_EtaRel",&electron_EtaRel,"electron_EtaRel[nelectron]/F",bufferSize); + tree_->Branch("electron_dxy",&electron_dxy,"electron_dxy[nelectron]/F",bufferSize); + tree_->Branch("electron_dz",&electron_dz,"electron_dz[nelectron]/F",bufferSize); + tree_->Branch("electron_nbOfMissingHits",&electron_nbOfMissingHits,"electron_nbOfMissingHits[nelectron]/F",bufferSize); + tree_->Branch("electron_gsfCharge",&electron_gsfCharge,"electron_gsfCharge[nelectron]/F",bufferSize); + + + tree_->Branch("electron_numberOfBrems",&electron_numberOfBrems,"electron_numberOfBrems[nelectron]/I",bufferSize); + tree_->Branch("electron_trackFbrem",&electron_trackFbrem,"electron_trackFbrem[nelectron]/F",bufferSize); + tree_->Branch("electron_fbrem",&electron_fbrem,"electron_fbrem[nelectron]/F",bufferSize); + tree_->Branch("electron_e5x5",&electron_e5x5,"electron_e5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_e5x5Rel",&electron_e5x5Rel,"electron_e5x5Rel[nelectron]/F",bufferSize); + tree_->Branch("electron_e1x5Overe5x5",&electron_e1x5Overe5x5,"electron_e1x5Overe5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_e2x5MaxOvere5x5",&electron_e2x5MaxOvere5x5,"electron_e2x5MaxOvere5x5[nelectron]/F",bufferSize); + + // 5*5 cells cluster + // + + tree_->Branch("electron_full5x5_e5x5",&electron_full5x5_e5x5,"electron_full5x5_e5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_e5x5Rel",&electron_full5x5_e5x5Rel,"electron_full5x5_e5x5Rel[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_sigmaIetaIeta",&electron_full5x5_sigmaIetaIeta,"electron_full5x5_sigmaIetaIeta[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_e1x5Overe5x5",&electron_full5x5_e1x5Overe5x5,"electron_full5x5_e1x5Overe5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_e2x5BottomOvere5x5",&electron_full5x5_e2x5BottomOvere5x5,"electron_full5x5_e2x5BottomOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_e2x5LeftOvere5x5",&electron_full5x5_e2x5LeftOvere5x5,"electron_full5x5_e2x5LeftOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_e2x5MaxOvere5x5",&electron_full5x5_e2x5MaxOvere5x5,"electron_full5x5_e2x5MaxOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_e2x5RightOvere5x5",&electron_full5x5_e2x5RightOvere5x5,"electron_full5x5_e2x5RightOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_e2x5TopOvere5x5",&electron_full5x5_e2x5TopOvere5x5,"electron_full5x5_e2x5TopOvere5x5[nelectron]/F",bufferSize); + + + + tree_->Branch("electron_full5x5_eBottomOvere5x5",&electron_full5x5_eBottomOvere5x5,"electron_full5x5_eBottomOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_eLeftOvere5x5",&electron_full5x5_eLeftOvere5x5,"electron_full5x5_eLeftOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_eRightOvere5x5",&electron_full5x5_eRightOvere5x5,"electron_full5x5_eRightOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_eTopOvere5x5",&electron_full5x5_eTopOvere5x5,"electron_full5x5_eTopOvere5x5[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_hcalDepth1OverEcal",&electron_full5x5_hcalDepth1OverEcal,"electron_full5x5_hcalDepth1OverEcal[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_hcalDepth1OverEcalBc",&electron_full5x5_hcalDepth1OverEcalBc,"electron_full5x5_hcalDepth1OverEcalBc[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_hcalDepth2OverEcal",&electron_full5x5_hcalDepth2OverEcal,"electron_full5x5_hcalDepth2OverEcal[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_hcalDepth2OverEcalBc",&electron_full5x5_hcalDepth2OverEcalBc,"electron_full5x5_hcalDepth2OverEcalBc[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_hcalOverEcal",&electron_full5x5_hcalOverEcal,"electron_full5x5_hcalOverEcal[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_hcalOverEcalBc",&electron_full5x5_hcalOverEcalBc, "electron_full5x5_hcalOverEcalBc[nelectron]/F",bufferSize); + tree_->Branch("electron_full5x5_r9",&electron_full5x5_r9,"electron_full5x5_r9[nelectron]/F",bufferSize); + + + + // Isolation block + tree_->Branch("electron_neutralHadronIso",&electron_neutralHadronIso,"electron_neutralHadronIso[nelectron]/F",bufferSize); + tree_->Branch("electron_particleIso",&electron_particleIso,"electron_particleIso[nelectron]/F",bufferSize); + tree_->Branch("electron_photonIso",&electron_photonIso,"electron_photonIso[nelectron]/F",bufferSize); + tree_->Branch("electron_puChargedHadronIso",&electron_puChargedHadronIso,"electron_puChargedHadronIso[nelectron]/F",bufferSize); + tree_->Branch("electron_trackIso",&electron_trackIso,"electron_trackIso[nelectron]/F",bufferSize); + tree_->Branch("electron_hcalDepth1OverEcal",&electron_hcalDepth1OverEcal,"electron_hcalDepth1OverEcal[nelectron]/F",bufferSize); + tree_->Branch("electron_hcalDepth2OverEcal",&electron_hcalDepth2OverEcal,"electron_hcalDepth2OverEcal[nelectron]/F",bufferSize); + tree_->Branch("electron_ecalPFClusterIso",&electron_ecalPFClusterIso,"electron_ecalPFClusterIso[nelectron]/F",bufferSize); + tree_->Branch("electron_hcalPFClusterIso",&electron_hcalPFClusterIso,"electron_hcalPFClusterIso[nelectron]/F",bufferSize); + tree_->Branch("electron_dr03TkSumPt",&electron_dr03TkSumPt,"electron_dr03TkSumPt[nelectron]/F",bufferSize); + + tree_->Branch("electron_dr03EcalRecHitSumEt",&electron_dr03EcalRecHitSumEt,"electron_dr03EcalRecHitSumEt[nelectron]/F",bufferSize); + tree_->Branch("electron_dr03HcalDepth1TowerSumEt",&electron_dr03HcalDepth1TowerSumEt,"electron_dr03HcalDepth1TowerSumEt[nelectron]/F",bufferSize); + tree_->Branch("electron_dr03HcalDepth1TowerSumEtBc",&electron_dr03HcalDepth1TowerSumEtBc,"electron_dr03HcalDepth1TowerSumEtBc[nelectron]/F",bufferSize); + tree_->Branch("electron_dr03HcalDepth2TowerSumEt",&electron_dr03HcalDepth2TowerSumEt,"electron_dr03HcalDepth2TowerSumEt[nelectron]/F",bufferSize); + tree_->Branch("electron_dr03HcalDepth2TowerSumEtBc",&electron_dr03HcalDepth2TowerSumEtBc,"electron_dr03HcalDepth2TowerSumEtBc[nelectron]/F",bufferSize); + tree_->Branch("electron_pfSumPhotonEt",&electron_pfSumPhotonEt,"electron_pfSumPhotonEt[nelectron]/F",bufferSize); + tree_->Branch("electron_pfSumChargedHadronPt",&electron_pfSumChargedHadronPt,"electron_pfSumChargedHadronPt[nelectron]/F",bufferSize); + tree_->Branch("electron_pfSumNeutralHadronEt",&electron_pfSumNeutralHadronEt,"electron_pfSumNeutralHadronEt[nelectron]/F",bufferSize); + tree_->Branch("electron_pfSumPUPt",&electron_pfSumPUPt,"electron_pfSumPUPt[nelectron]/F",bufferSize); + + tree_->Branch("electron_dr04EcalRecHitSumEt",&electron_dr04EcalRecHitSumEt,"electron_dr04EcalRecHitSumEt[nelectron]/F",bufferSize); + tree_->Branch("electron_dr04HcalDepth1TowerSumEt",&electron_dr04HcalDepth1TowerSumEt,"electron_dr04HcalDepth1TowerSumEt[nelectron]",bufferSize); + tree_->Branch("electron_dr04HcalDepth1TowerSumEtBc",&electron_dr04HcalDepth1TowerSumEtBc,"electron_dr04HcalDepth1TowerSumEtBc[nelectron]/F",bufferSize); + tree_->Branch("electron_dr04HcalDepth2TowerSumEt",&electron_dr04HcalDepth2TowerSumEt,"electron_dr04HcalDepth2TowerSumEt[nelectron]/F",bufferSize); + tree_->Branch("electron_dr04HcalDepth2TowerSumEtBc",&electron_dr04HcalDepth2TowerSumEtBc,"electron_dr04HcalDepth2TowerSumEtBc[nelectron]/F",bufferSize); + tree_->Branch("electron_dr04HcalTowerSumEt",&electron_dr04HcalTowerSumEt,"electron_dr04HcalTowerSumEt[nelectron]/F",bufferSize); + tree_->Branch("electron_dr04HcalTowerSumEtBc",&electron_dr04HcalTowerSumEtBc,"electron_dr04HcalTowerSumEtBc[nelectron]/F",bufferSize); + tree_->SetBasketSize("*",bufferSize); //default is 16kB } @@ -550,59 +750,54 @@ class NanoXTree float GenJet_pt[maxEntries]; unsigned int njetorigin; - float jetorigin_isPU[maxEntries]; - float jetorigin_isB[maxEntries]; - float jetorigin_isBB[maxEntries]; - float jetorigin_isGBB[maxEntries]; - float jetorigin_isLeptonic_B[maxEntries]; - float jetorigin_isLeptonic_C[maxEntries]; - float jetorigin_isC[maxEntries]; - float jetorigin_isCC[maxEntries]; - float jetorigin_isGCC[maxEntries]; - float jetorigin_isS[maxEntries]; - float jetorigin_isUD[maxEntries]; - float jetorigin_isG[maxEntries]; -// float jetorigin_fromLLP[maxEntries]; - //Include LLP flavour : - float jetorigin_isLLP_RAD[maxEntries]; - float jetorigin_isLLP_MU[maxEntries]; - float jetorigin_isLLP_E[maxEntries]; - float jetorigin_isLLP_Q[maxEntries]; - float jetorigin_isLLP_QMU[maxEntries]; - float jetorigin_isLLP_QE[maxEntries]; - float jetorigin_isLLP_QQ[maxEntries]; - float jetorigin_isLLP_QQMU[maxEntries]; - float jetorigin_isLLP_QQE[maxEntries]; - float jetorigin_isLLP_B[maxEntries]; - float jetorigin_isLLP_BMU[maxEntries]; - float jetorigin_isLLP_BE[maxEntries]; - float jetorigin_isLLP_BB[maxEntries]; - float jetorigin_isLLP_BBMU[maxEntries]; - float jetorigin_isLLP_BBE[maxEntries]; - float jetorigin_isUndefined[maxEntries]; + int jetorigin_isPU[maxEntries]; + int jetorigin_isB[maxEntries]; + int jetorigin_isBB[maxEntries]; + int jetorigin_isGBB[maxEntries]; + int jetorigin_isLeptonic_B[maxEntries]; + int jetorigin_isLeptonic_C[maxEntries]; + int jetorigin_isC[maxEntries]; + int jetorigin_isCC[maxEntries]; + int jetorigin_isGCC[maxEntries]; + int jetorigin_isS[maxEntries]; + int jetorigin_isUD[maxEntries]; + int jetorigin_isG[maxEntries]; + + int jetorigin_isLLP_RAD[maxEntries]; + int jetorigin_isLLP_MU[maxEntries]; + int jetorigin_isLLP_E[maxEntries]; + int jetorigin_isLLP_Q[maxEntries]; + int jetorigin_isLLP_QMU[maxEntries]; + int jetorigin_isLLP_QE[maxEntries]; + int jetorigin_isLLP_QQ[maxEntries]; + int jetorigin_isLLP_QQMU[maxEntries]; + int jetorigin_isLLP_QQE[maxEntries]; + int jetorigin_isLLP_B[maxEntries]; + int jetorigin_isLLP_BMU[maxEntries]; + int jetorigin_isLLP_BE[maxEntries]; + int jetorigin_isLLP_BB[maxEntries]; + int jetorigin_isLLP_BBMU[maxEntries]; + int jetorigin_isLLP_BBE[maxEntries]; + int jetorigin_isUndefined[maxEntries]; float jetorigin_displacement[maxEntries]; -// float jetorigin_ctau[maxEntries]; float jetorigin_decay_angle[maxEntries]; - float jetorigin_displacement_xy[maxEntries]; - float jetorigin_displacement_z[maxEntries]; - float jetorigin_betagamma[maxEntries]; - int jetorigin_jetIdx[maxEntries]; - int jetorigin_partonFlavor[maxEntries]; - int jetorigin_hadronFlavor[maxEntries]; - int jetorigin_llpId[maxEntries]; - float jetorigin_llp_mass[maxEntries]; - float jetorigin_llp_pt[maxEntries]; - - //float jetorigin_llpmass_reco[maxEntries]; + float jetorigin_displacement_xy[maxEntries]; + float jetorigin_displacement_z[maxEntries]; + float jetorigin_betagamma[maxEntries]; + int jetorigin_partonFlavor[maxEntries]; + int jetorigin_hadronFlavor[maxEntries]; + int jetorigin_llpId[maxEntries]; + float jetorigin_llp_mass[maxEntries]; + float jetorigin_llp_pt[maxEntries]; - unsigned int nglobal; + + unsigned int nglobal; float global_pt[maxEntries]; float global_eta[maxEntries]; - float global_mass[maxEntries]; -// float global_energy[maxEntries]; - int global_n60[maxEntries]; - int global_n90[maxEntries]; + float global_mass[maxEntries]; + int global_n60[maxEntries]; + int global_n90[maxEntries]; float global_chargedEmEnergyFraction[maxEntries]; float global_chargedHadronEnergyFraction[maxEntries]; float global_chargedMuEnergyFraction[maxEntries]; @@ -624,17 +819,18 @@ class NanoXTree float global_eventShapeC[maxEntries]; float global_eventShapeD[maxEntries]; - float global_rho; float xsecweight; float processId; float isData; -// Not sure about this 2 lines. -// - Int_t length_cpf; - float cpf_length[maxEntries]; -///////////////////////////// - unsigned int ncpf[maxEntries]; + unsigned int nlength; + int length_cpf[maxEntries]; + int length_npf[maxEntries]; + int length_sv[maxEntries]; + int length_muon[maxEntries]; + int length_electron[maxEntries]; + + unsigned int ncpf; float cpf_trackEtaRel[maxEntries]; float cpf_trackPtRel[maxEntries]; float cpf_trackPPar[maxEntries]; @@ -648,6 +844,8 @@ class NanoXTree float cpf_trackJetDistVal[maxEntries]; float cpf_trackJetDistSig[maxEntries]; float cpf_ptrel[maxEntries]; + float cpf_deta[maxEntries]; + float cpf_dphi[maxEntries]; float cpf_drminsv[maxEntries]; float cpf_vertex_association[maxEntries]; float cpf_fromPV[maxEntries]; @@ -656,9 +854,12 @@ class NanoXTree float cpf_track_ndof[maxEntries]; float cpf_track_quality[maxEntries]; float cpf_relmassdrop[maxEntries]; -// float cpf_relIso01[maxEntries]; - unsigned int ncsv[maxEntries]; + int cpf_matchedSV[maxEntries]; + int cpf_matchedMuon[maxEntries]; + int cpf_matchedElectron[maxEntries]; + + unsigned int ncsv; float csv_trackSumJetEtRatio[maxEntries]; float csv_trackSumJetDeltaR[maxEntries]; float csv_vertexCategory[maxEntries]; @@ -669,24 +870,22 @@ class NanoXTree float csv_jetNSelectedTracks[maxEntries]; float csv_jetNTracksEtaRel[maxEntries]; - unsigned int nnpflength; - float npflength_length[maxEntries]; - - unsigned int nnpf[maxEntries]; + + unsigned int nnpf; float npf_ptrel[maxEntries]; + float npf_deta[maxEntries]; + float npf_dphi[maxEntries]; float npf_deltaR[maxEntries]; float npf_isGamma[maxEntries]; float npf_hcal_fraction[maxEntries]; float npf_drminsv[maxEntries]; float npf_puppi_weight[maxEntries]; float npf_relmassdrop[maxEntries]; - float npf_relIso01[maxEntries]; - unsigned int nsvlength; - float svlength_length[maxEntries]; - - unsigned int nsv[maxEntries]; - float sv_pt[maxEntries]; + unsigned int nsv; + float sv_ptrel[maxEntries]; + float sv_deta[maxEntries]; + float sv_dphi[maxEntries]; float sv_mass[maxEntries]; float sv_deltaR[maxEntries]; float sv_ntracks[maxEntries]; @@ -699,21 +898,19 @@ class NanoXTree float sv_costhetasvpv[maxEntries]; float sv_enratio[maxEntries]; - unsigned int nmu; - int muon_jetIdx[maxEntries] ; - float muon_isGlobal[maxEntries] ; - float muon_isTight[maxEntries] ; - float muon_isMedium[maxEntries] ; - float muon_isLoose[maxEntries] ; - float muon_isStandAlone[maxEntries] ; + unsigned int nmuon; + float muon_isGlobal[maxEntries] ; + float muon_isTight[maxEntries] ; + float muon_isMedium[maxEntries] ; + float muon_isLoose[maxEntries] ; + float muon_isStandAlone[maxEntries] ; - float muon_ptrel [maxEntries]; float muon_EtaRel[maxEntries]; - float muon_phi[maxEntries]; + float muon_deta[maxEntries]; + float muon_dphi[maxEntries]; float muon_charge [maxEntries]; float muon_energy[maxEntries]; -// float muon_et [maxEntries]; float muon_jetDeltaR [maxEntries]; float muon_numberOfMatchedStations [maxEntries]; @@ -728,8 +925,7 @@ class NanoXTree float muon_dz [maxEntries]; float muon_dzError [maxEntries]; float muon_numberOfValidPixelHits[maxEntries]; - float muon_numberOfpixelLayersWithMeasurement [maxEntries]; -// float muon_numberOfstripLayersWithMeasurement [maxEntries]; + float muon_numberOfpixelLayersWithMeasurement[maxEntries]; float muon_chi2 [maxEntries]; float muon_ndof [maxEntries]; @@ -757,13 +953,136 @@ class NanoXTree float muon_timeAtIpInOutErr [maxEntries]; float muon_timeAtIpOutIn [maxEntries]; + unsigned int nelectron; + unsigned int nelec; -/* unsigned int nlegacyTag[maxEntries]; - float legacyTag_median_dxy[maxEntries]; - float legacyTag_median_trackSip2dSig[maxEntries]; - float legacyTag_alpha[maxEntries];*/ - - + int electron_jetIdx[maxEntries]; + float electron_ptrel[maxEntries]; + float electron_jetDeltaR[maxEntries]; + float electron_deta[maxEntries]; + float electron_dphi[maxEntries]; + float electron_charge[maxEntries]; + float electron_energy[maxEntries]; + float electron_EtFromCaloEn[maxEntries]; + float electron_isEB[maxEntries]; + float electron_isEE[maxEntries]; + float electron_ecalEnergy[maxEntries]; + float electron_isPassConversionVeto[maxEntries]; + float electron_convDist[maxEntries]; + int electron_convFlags[maxEntries]; + float electron_convRadius[maxEntries]; + float electron_hadronicOverEm[maxEntries]; + float electron_ecalDrivenSeed[maxEntries]; + + // superCluster block + + float electron_SC_energy[maxEntries]; + float electron_SC_deta[maxEntries]; + float electron_SC_dphi[maxEntries]; + float electron_SC_et[maxEntries]; + float electron_SC_eSuperClusterOverP[maxEntries]; + float electron_scE1x5Overe5x5[maxEntries]; + float electron_scE2x5MaxOvere5x5[maxEntries]; + float electron_scE5x5[maxEntries]; + float electron_scE5x5Rel[maxEntries]; + float electron_scPixCharge[maxEntries]; + float electron_scSigmaEtaEta[maxEntries]; + float electron_scSigmaIEtaIEta[maxEntries]; + float electron_superClusterFbrem[maxEntries]; + + float electron_2dIP[maxEntries]; + float electron_2dIPSig[maxEntries]; + float electron_3dIP[maxEntries]; + float electron_3dIPSig[maxEntries]; + float electron_eSeedClusterOverP[maxEntries]; + float electron_eSeedClusterOverPout[maxEntries]; + float electron_eSuperClusterOverP[maxEntries]; + float electron_eTopOvere5x5[maxEntries]; + + float electron_deltaEtaEleClusterTrackAtCalo[maxEntries]; + float electron_deltaEtaSeedClusterTrackAtCalo[maxEntries]; + float electron_deltaPhiSeedClusterTrackAtCalo[maxEntries]; + float electron_deltaEtaSeedClusterTrackAtVtx[maxEntries]; + float electron_deltaEtaSuperClusterTrackAtVtx[maxEntries]; + float electron_deltaPhiEleClusterTrackAtCalo[maxEntries]; + float electron_deltaPhiSuperClusterTrackAtVtx[maxEntries]; + float electron_sCseedEta[maxEntries]; + + // electron gsf variables. + float electron_EtaRel[maxEntries]; + float electron_dxy[maxEntries]; + float electron_dz[maxEntries]; + float electron_nbOfMissingHits[maxEntries]; + float electron_gsfCharge[maxEntries]; + + + int electron_numberOfBrems[maxEntries]; + float electron_trackFbrem[maxEntries]; + float electron_fbrem[maxEntries]; + float electron_e5x5[maxEntries]; + float electron_e5x5Rel[maxEntries]; + float electron_e1x5Overe5x5[maxEntries]; + float electron_e2x5MaxOvere5x5[maxEntries]; + + // 5*5 cells cluster + // + + float electron_full5x5_e5x5[maxEntries]; + float electron_full5x5_e5x5Rel[maxEntries]; + float electron_full5x5_sigmaIetaIeta[maxEntries]; + float electron_full5x5_e1x5Overe5x5[maxEntries]; + float electron_full5x5_e2x5BottomOvere5x5[maxEntries]; + float electron_full5x5_e2x5LeftOvere5x5[maxEntries]; + float electron_full5x5_e2x5MaxOvere5x5[maxEntries]; + float electron_full5x5_e2x5RightOvere5x5[maxEntries]; + float electron_full5x5_e2x5TopOvere5x5[maxEntries]; + + + + float electron_full5x5_eBottomOvere5x5[maxEntries]; + float electron_full5x5_eLeftOvere5x5[maxEntries]; + float electron_full5x5_eRightOvere5x5[maxEntries]; + float electron_full5x5_eTopOvere5x5[maxEntries]; + float electron_full5x5_hcalDepth1OverEcal[maxEntries]; + float electron_full5x5_hcalDepth1OverEcalBc[maxEntries]; + float electron_full5x5_hcalDepth2OverEcal[maxEntries]; + float electron_full5x5_hcalDepth2OverEcalBc[maxEntries]; + float electron_full5x5_hcalOverEcal[maxEntries]; + float electron_full5x5_hcalOverEcalBc[maxEntries]; + float electron_full5x5_r9[maxEntries]; + + + + // Isolation block + float electron_neutralHadronIso[maxEntries]; + float electron_particleIso [maxEntries]; + float electron_photonIso[maxEntries]; + float electron_puChargedHadronIso[maxEntries]; + float electron_trackIso[maxEntries]; + float electron_hcalDepth1OverEcal[maxEntries]; + float electron_hcalDepth2OverEcal[maxEntries]; + float electron_ecalPFClusterIso[maxEntries]; + float electron_hcalPFClusterIso[maxEntries]; + float electron_dr03TkSumPt[maxEntries]; + + float electron_dr03EcalRecHitSumEt[maxEntries]; + float electron_dr03HcalDepth1TowerSumEt[maxEntries]; + float electron_dr03HcalDepth1TowerSumEtBc[maxEntries]; + float electron_dr03HcalDepth2TowerSumEt[maxEntries]; + float electron_dr03HcalDepth2TowerSumEtBc[maxEntries]; + float electron_pfSumPhotonEt[maxEntries]; + float electron_pfSumChargedHadronPt[maxEntries]; + float electron_pfSumNeutralHadronEt[maxEntries]; + float electron_pfSumPUPt[maxEntries]; + + float electron_dr04EcalRecHitSumEt[maxEntries]; + float electron_dr04HcalDepth1TowerSumEt[maxEntries]; + float electron_dr04HcalDepth1TowerSumEtBc[maxEntries]; + float electron_dr04HcalDepth2TowerSumEt[maxEntries]; + float electron_dr04HcalDepth2TowerSumEtBc[maxEntries]; + float electron_dr04HcalTowerSumEt[maxEntries]; + float electron_dr04HcalTowerSumEtBc[maxEntries]; + std::mt19937 randomGenerator_; std::uniform_real_distribution<> uniform_dist_; @@ -771,7 +1090,7 @@ class NanoXTree typedef exprtk::expression Expression; typedef exprtk::parser Parser; - //for the symbol table + float isB; float isBB; float isGBB; @@ -783,7 +1102,7 @@ class NanoXTree float isS; float isUD; float isG; -// add here what you want + float isLLP_RAD; float isLLP_MU; float isLLP_E; @@ -803,8 +1122,8 @@ class NanoXTree float fromLLP; float rand; - float logpt; - // float ctau; + float pt; + float ctau; SymbolTable symbolTable_; std::vector selections_; @@ -836,11 +1155,19 @@ class NanoXTree { tree_->SetBranchAddress("njetorigin",&njetorigin); - tree_->SetBranchAddress("jetorigin_isUndefined",&jetorigin_isUndefined); - tree_->SetBranchAddress("jetorigin_displacement",&jetorigin_displacement); tree_->SetBranchAddress("jetorigin_decay_angle",&jetorigin_decay_angle); + tree_->SetBranchAddress("jetorigin_displacement_xy" , &jetorigin_displacement_xy); + tree_->SetBranchAddress("jetorigin_displacement_z" , &jetorigin_displacement_z); + tree_->SetBranchAddress("jetorigin_betagamma", &jetorigin_betagamma); + tree_->SetBranchAddress("jetorigin_partonFlavor", &jetorigin_partonFlavor); + tree_->SetBranchAddress("jetorigin_hadronFlavor", &jetorigin_hadronFlavor); + tree_->SetBranchAddress("jetorigin_llpId", &jetorigin_llpId); + tree_->SetBranchAddress("jetorigin_llp_mass", &jetorigin_llp_mass); + tree_->SetBranchAddress("jetorigin_llp_pt", &jetorigin_llp_pt); + + tree_->SetBranchAddress("jetorigin_isUndefined",&jetorigin_isUndefined); tree_->SetBranchAddress("jetorigin_isB",&jetorigin_isB); tree_->SetBranchAddress("jetorigin_isBB",&jetorigin_isBB); tree_->SetBranchAddress("jetorigin_isGBB",&jetorigin_isGBB); @@ -853,38 +1180,24 @@ class NanoXTree tree_->SetBranchAddress("jetorigin_isUD",&jetorigin_isUD); tree_->SetBranchAddress("jetorigin_isG",&jetorigin_isG); tree_->SetBranchAddress("jetorigin_isPU",&jetorigin_isPU); - //tree_->SetBranchAddress("jetorigin_fromLLP",&jetorigin_fromLLP); - - tree_->SetBranchAddress("jetorigin_isLLP_RAD",&jetorigin_isLLP_RAD ) ; - tree_->SetBranchAddress("jetorigin_isLLP_MU",&jetorigin_isLLP_MU) ; - tree_->SetBranchAddress("jetorigin_isLLP_E",&jetorigin_isLLP_E ) ; - tree_->SetBranchAddress("jetorigin_isLLP_Q",&jetorigin_isLLP_Q ) ; - tree_->SetBranchAddress("jetorigin_isLLP_QMU",&jetorigin_isLLP_QMU) ; - tree_->SetBranchAddress("jetorigin_isLLP_QE",&jetorigin_isLLP_QE) ; - tree_->SetBranchAddress("jetorigin_isLLP_QQ",&jetorigin_isLLP_QQ ); - tree_->SetBranchAddress("jetorigin_isLLP_QQMU",&jetorigin_isLLP_QQMU ); - tree_->SetBranchAddress("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE) ; - tree_->SetBranchAddress("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE ) ; - tree_->SetBranchAddress("jetorigin_isLLP_BMU",&jetorigin_isLLP_BMU) ; - tree_->SetBranchAddress("jetorigin_isLLP_BE",&jetorigin_isLLP_BE ) ; - tree_->SetBranchAddress("jetorigin_isLLP_BB",&jetorigin_isLLP_BB) ; - tree_->SetBranchAddress("jetorigin_isLLP_BBMU",&jetorigin_isLLP_BBMU) ; - tree_->SetBranchAddress("jetorigin_isLLP_BBE",&jetorigin_isLLP_BBE ) ; - - //tree_->SetBranchAddress("jetorigin_fromLLP",&jetorigin_fromLLP,"jetorigin_fromLLP/I",bufferSize); - tree_->SetBranchAddress("jetorigin_isUndefined",&jetorigin_isUndefined); - tree_->SetBranchAddress("jetorigin_displacement",&jetorigin_displacement); - //tree_->SetBranchAddress("jetorigin_ctau",&jetorigin_ctau,"jetorigin_ctau/F",bufferSize); - tree_->SetBranchAddress("jetorigin_decay_angle",&jetorigin_decay_angle); - tree_->SetBranchAddress("jetorigin_displacement_xy" , &jetorigin_displacement_xy); - tree_->SetBranchAddress("jetorigin_displacement_z" , &jetorigin_displacement_z); - tree_->SetBranchAddress("jetorigin_betagamma", &jetorigin_betagamma); - tree_->SetBranchAddress("jetorigin_jetIdx", &jetorigin_jetIdx); - tree_->SetBranchAddress("jetorigin_partonFlavor", &jetorigin_partonFlavor); - tree_->SetBranchAddress("jetorigin_hadronFlavor", &jetorigin_hadronFlavor); - tree_->SetBranchAddress("jetorigin_llpId", &jetorigin_llpId); - tree_->SetBranchAddress("jetorigin_llp_mass", &jetorigin_llp_mass); - tree_->SetBranchAddress("jetorigin_llp_pt", &jetorigin_llp_pt); + + tree_->SetBranchAddress("jetorigin_isLLP_RAD",&jetorigin_isLLP_RAD ) ; + tree_->SetBranchAddress("jetorigin_isLLP_MU",&jetorigin_isLLP_MU) ; + tree_->SetBranchAddress("jetorigin_isLLP_E",&jetorigin_isLLP_E ) ; + tree_->SetBranchAddress("jetorigin_isLLP_Q",&jetorigin_isLLP_Q ) ; + tree_->SetBranchAddress("jetorigin_isLLP_QMU",&jetorigin_isLLP_QMU) ; + tree_->SetBranchAddress("jetorigin_isLLP_QE",&jetorigin_isLLP_QE) ; + tree_->SetBranchAddress("jetorigin_isLLP_QQ",&jetorigin_isLLP_QQ ); + tree_->SetBranchAddress("jetorigin_isLLP_QQMU",&jetorigin_isLLP_QQMU ); + tree_->SetBranchAddress("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE) ; + tree_->SetBranchAddress("jetorigin_isLLP_QQE",&jetorigin_isLLP_QQE ) ; + tree_->SetBranchAddress("jetorigin_isLLP_BMU",&jetorigin_isLLP_BMU) ; + tree_->SetBranchAddress("jetorigin_isLLP_BE",&jetorigin_isLLP_BE ) ; + tree_->SetBranchAddress("jetorigin_isLLP_BB",&jetorigin_isLLP_BB) ; + tree_->SetBranchAddress("jetorigin_isLLP_BBMU",&jetorigin_isLLP_BBMU) ; + tree_->SetBranchAddress("jetorigin_isLLP_BBE",&jetorigin_isLLP_BBE ) ; + + } else { @@ -893,18 +1206,21 @@ class NanoXTree tree_->SetBranchAddress("isData",&isData); tree_->SetBranchAddress("processId",&processId); } - - //tree_->SetBranchAddress("jetorigin_llpmass_reco",&jetorigin_llpmass_reco); + tree_->SetBranchAddress("nlength",&nlength); + tree_->SetBranchAddress("length_cpf",&length_cpf); + tree_->SetBranchAddress("length_npf",&length_npf); + tree_->SetBranchAddress("length_sv",&length_sv); + tree_->SetBranchAddress("length_mu",&length_muon); + tree_->SetBranchAddress("length_ele",&length_electron); + tree_->SetBranchAddress("nglobal",&nglobal); tree_->SetBranchAddress("global_pt",&global_pt); tree_->SetBranchAddress("global_eta",&global_eta); - tree_->SetBranchAddress("fixedGridRhoFastjetAll",&global_rho); - tree_->SetBranchAddress("global_mass",&global_mass); -// tree_->SetBranchAddress("global_energy",&global_energy); - tree_->SetBranchAddress("global_n60",&global_n60); - tree_->SetBranchAddress("global_n90",&global_n90); + tree_->SetBranchAddress("global_mass",&global_mass); + tree_->SetBranchAddress("global_n60",&global_n60); + tree_->SetBranchAddress("global_n90",&global_n90); tree_->SetBranchAddress("global_chargedEmEnergyFraction",&global_chargedEmEnergyFraction); tree_->SetBranchAddress("global_chargedHadronEnergyFraction",&global_chargedHadronEnergyFraction); tree_->SetBranchAddress("global_chargedMuEnergyFraction",&global_chargedMuEnergyFraction); @@ -925,12 +1241,19 @@ class NanoXTree tree_->SetBranchAddress("global_isotropy",&global_isotropy); tree_->SetBranchAddress("global_eventShapeC",&global_eventShapeC); tree_->SetBranchAddress("global_eventShapeD",&global_eventShapeD); - -// Here also it is related. -// - tree_->SetBranchAddress("length_cpf",&length_cpf); - tree_->SetBranchAddress("cpf",&cpf_length); + tree_->SetBranchAddress("ncsv",&ncsv); + tree_->SetBranchAddress("csv_trackSumJetEtRatio",&csv_trackSumJetEtRatio); + tree_->SetBranchAddress("csv_trackSumJetDeltaR",&csv_trackSumJetDeltaR); + tree_->SetBranchAddress("csv_vertexCategory",&csv_vertexCategory); + tree_->SetBranchAddress("csv_trackSip2dValAboveCharm",&csv_trackSip2dValAboveCharm); + tree_->SetBranchAddress("csv_trackSip2dSigAboveCharm",&csv_trackSip2dSigAboveCharm); + tree_->SetBranchAddress("csv_trackSip3dValAboveCharm",&csv_trackSip3dValAboveCharm); + tree_->SetBranchAddress("csv_trackSip3dSigAboveCharm",&csv_trackSip3dSigAboveCharm); + tree_->SetBranchAddress("csv_jetNSelectedTracks",&csv_jetNSelectedTracks); + tree_->SetBranchAddress("csv_jetNTracksEtaRel",&csv_jetNTracksEtaRel); + + tree_->SetBranchAddress("ncpf",&ncpf); tree_->SetBranchAddress("cpf_trackEtaRel",&cpf_trackEtaRel); tree_->SetBranchAddress("cpf_trackPtRel",&cpf_trackPtRel); @@ -945,6 +1268,8 @@ class NanoXTree tree_->SetBranchAddress("cpf_trackJetDistVal",&cpf_trackJetDistVal); tree_->SetBranchAddress("cpf_trackJetDistSig",&cpf_trackJetDistSig); tree_->SetBranchAddress("cpf_ptrel",&cpf_ptrel); + tree_->SetBranchAddress("cpf_deta",&cpf_deta); + tree_->SetBranchAddress("cpf_dphi",&cpf_dphi); tree_->SetBranchAddress("cpf_drminsv",&cpf_drminsv); tree_->SetBranchAddress("cpf_vertex_association",&cpf_vertex_association); tree_->SetBranchAddress("cpf_fromPV",&cpf_fromPV); @@ -953,37 +1278,27 @@ class NanoXTree tree_->SetBranchAddress("cpf_track_ndof",&cpf_track_ndof); tree_->SetBranchAddress("cpf_track_quality",&cpf_track_quality); tree_->SetBranchAddress("cpf_relmassdrop",&cpf_relmassdrop); -// tree_->SetBranchAddress("cpf_relIso01",&cpf_relIso01); - tree_->SetBranchAddress("ncsv",&ncsv); - tree_->SetBranchAddress("csv_trackSumJetEtRatio",&csv_trackSumJetEtRatio); - tree_->SetBranchAddress("csv_trackSumJetDeltaR",&csv_trackSumJetDeltaR); - tree_->SetBranchAddress("csv_vertexCategory",&csv_vertexCategory); - tree_->SetBranchAddress("csv_trackSip2dValAboveCharm",&csv_trackSip2dValAboveCharm); - tree_->SetBranchAddress("csv_trackSip2dSigAboveCharm",&csv_trackSip2dSigAboveCharm); - tree_->SetBranchAddress("csv_trackSip3dValAboveCharm",&csv_trackSip3dValAboveCharm); - tree_->SetBranchAddress("csv_trackSip3dSigAboveCharm",&csv_trackSip3dSigAboveCharm); - tree_->SetBranchAddress("csv_jetNSelectedTracks",&csv_jetNSelectedTracks); - tree_->SetBranchAddress("csv_jetNTracksEtaRel",&csv_jetNTracksEtaRel); - - tree_->SetBranchAddress("nnpflength",&nnpflength); - tree_->SetBranchAddress("npflength_length",&npflength_length); + tree_->SetBranchAddress("cpf_matchedSV",&cpf_matchedSV); + tree_->SetBranchAddress("cpf_matchedMuon",&cpf_matchedMuon); + tree_->SetBranchAddress("cpf_matchedElectron",&cpf_matchedElectron); + tree_->SetBranchAddress("nnpf",&nnpf); tree_->SetBranchAddress("npf_ptrel",&npf_ptrel); + tree_->SetBranchAddress("npf_deta",&npf_deta); + tree_->SetBranchAddress("npf_dphi",&npf_dphi); tree_->SetBranchAddress("npf_deltaR",&npf_deltaR); tree_->SetBranchAddress("npf_isGamma",&npf_isGamma); tree_->SetBranchAddress("npf_hcal_fraction",&npf_hcal_fraction); tree_->SetBranchAddress("npf_drminsv",&npf_drminsv); tree_->SetBranchAddress("npf_puppi_weight",&npf_puppi_weight); tree_->SetBranchAddress("npf_relmassdrop",&npf_relmassdrop); - tree_->SetBranchAddress("npf_relIso01",&npf_relIso01); - - tree_->SetBranchAddress("nsvlength",&nsvlength); - tree_->SetBranchAddress("svlength_length",&svlength_length); tree_->SetBranchAddress("nsv",&nsv); - tree_->SetBranchAddress("sv_pt",&sv_pt); + tree_->SetBranchAddress("sv_ptrel",&sv_ptrel); + tree_->SetBranchAddress("sv_deta",&sv_deta); + tree_->SetBranchAddress("sv_dphi",&sv_dphi); tree_->SetBranchAddress("sv_mass",&sv_mass); tree_->SetBranchAddress("sv_deltaR",&sv_deltaR); tree_->SetBranchAddress("sv_ntracks",&sv_ntracks); @@ -996,20 +1311,19 @@ class NanoXTree tree_->SetBranchAddress("sv_costhetasvpv",&sv_costhetasvpv); tree_->SetBranchAddress("sv_enratio",&sv_enratio); - tree_->SetBranchAddress("muon_jetIdx",&muon_jetIdx); + tree_->SetBranchAddress("nmuon",&nmuon); tree_->SetBranchAddress("muon_isGlobal",&muon_isGlobal); tree_->SetBranchAddress("muon_isTight",&muon_isTight); tree_->SetBranchAddress("muon_isMedium",&muon_isMedium); tree_->SetBranchAddress("muon_isLoose",&muon_isLoose); tree_->SetBranchAddress("muon_isStandAlone",&muon_isStandAlone); - tree_->SetBranchAddress("muon_ptrel", &muon_ptrel); tree_->SetBranchAddress("muon_EtaRel", &muon_EtaRel); - tree_->SetBranchAddress("muon_phi",&muon_phi); + tree_->SetBranchAddress("muon_dphi",&muon_dphi); + tree_->SetBranchAddress("muon_deta",&muon_deta); tree_->SetBranchAddress("muon_charge",&muon_charge); tree_->SetBranchAddress("muon_energy",&muon_energy); -// tree_->SetBranchAddress("muon_et",&muon_et); tree_->SetBranchAddress("muon_jetDeltaR",&muon_jetDeltaR); tree_->SetBranchAddress("muon_numberOfMatchedStations",&muon_numberOfMatchedStations); @@ -1025,7 +1339,6 @@ class NanoXTree tree_->SetBranchAddress("muon_dzError", &muon_dzError); tree_->SetBranchAddress("muon_numberOfValidPixelHits",&muon_numberOfValidPixelHits); tree_->SetBranchAddress("muon_numberOfpixelLayersWithMeasurement", &muon_numberOfpixelLayersWithMeasurement); -// tree_->SetBranchAddress("muon_numberOfstripLayersWithMeasurement", &muon_numberOfstripLayersWithMeasurement); //that does not help. needs to be discussed. tree_->SetBranchAddress("muon_chi2", &muon_chi2); tree_->SetBranchAddress("muon_ndof",&muon_ndof); @@ -1045,13 +1358,137 @@ class NanoXTree tree_->SetBranchAddress("muon_sumPfPhotonEt03",&muon_sumPfPhotonEt03); tree_->SetBranchAddress("muon_sumChHadronPt",&muon_sumChHadronPt); -/* tree_->SetBranchAddress("nlegacyTag",&nlegacyTag); - tree_->SetBranchAddress("legacyTag_median_dxy",&legacyTag_median_dxy); - tree_->SetBranchAddress("legacyTag_median_trackSip2dSig",&legacyTag_median_trackSip2dSig); - tree_->SetBranchAddress("legacyTag_alpha",&legacyTag_alpha);*/ - - //getEvent(0,true); - + + tree_->SetBranchAddress("nelectron",&nelectron); + +// tree_->SetBranchAddress("nelec",&nelec); + tree_->SetBranchAddress("electron_jetIdx",&electron_jetIdx); + tree_->SetBranchAddress("electron_ptrel",&electron_ptrel); + tree_->SetBranchAddress("electron_jetDeltaR",&electron_jetDeltaR); + tree_->SetBranchAddress("electron_deta",&electron_deta); + tree_->SetBranchAddress("electron_dphi",&electron_dphi); + tree_->SetBranchAddress("electron_charge",&electron_charge); + tree_->SetBranchAddress("electron_energy",&electron_energy); + tree_->SetBranchAddress("electron_EtFromCaloEn",&electron_EtFromCaloEn); + tree_->SetBranchAddress("electron_isEB",&electron_isEB); + tree_->SetBranchAddress("electron_isEE",&electron_isEE); + tree_->SetBranchAddress("electron_ecalEnergy",&electron_ecalEnergy); + tree_->SetBranchAddress("electron_isPassConversionVeto", &electron_isPassConversionVeto); + tree_->SetBranchAddress("electron_convDist",&electron_convDist); + tree_->SetBranchAddress("electron_convFlags",&electron_convFlags); + tree_->SetBranchAddress("electron_convRadius",&electron_convRadius); + tree_->SetBranchAddress("electron_hadronicOverEm",&electron_hadronicOverEm); + tree_->SetBranchAddress("electron_ecalDrivenSeed",&electron_ecalDrivenSeed); + + // superCluster block + + tree_->SetBranchAddress("electron_SC_energy",&electron_SC_energy); + tree_->SetBranchAddress("electron_SC_deta",&electron_SC_deta); + tree_->SetBranchAddress("electron_SC_dphi",&electron_SC_dphi); + tree_->SetBranchAddress("electron_SC_et",&electron_SC_et); + tree_->SetBranchAddress("electron_SC_eSuperClusterOverP",&electron_SC_eSuperClusterOverP); + tree_->SetBranchAddress("electron_scE1x5Overe5x5",&electron_scE1x5Overe5x5); + tree_->SetBranchAddress("electron_scE2x5MaxOvere5x5",&electron_scE2x5MaxOvere5x5); + tree_->SetBranchAddress("electron_scE5x5",&electron_scE5x5); + tree_->SetBranchAddress("electron_scE5x5Rel",&electron_scE5x5Rel); + tree_->SetBranchAddress("electron_scPixCharge",&electron_scPixCharge); + tree_->SetBranchAddress("electron_scSigmaEtaEta",&electron_scSigmaEtaEta); + tree_->SetBranchAddress("electron_scSigmaIEtaIEta",&electron_scSigmaIEtaIEta); + tree_->SetBranchAddress("electron_superClusterFbrem",&electron_superClusterFbrem); + + tree_->SetBranchAddress("electron_2dIP",&electron_2dIP); + tree_->SetBranchAddress("electron_2dIPSig",&electron_2dIPSig); + tree_->SetBranchAddress("electron_3dIP",&electron_3dIP); + tree_->SetBranchAddress("electron_3dIPSig",&electron_3dIPSig); + tree_->SetBranchAddress("electron_eSeedClusterOverP",&electron_eSeedClusterOverP); + tree_->SetBranchAddress("electron_eSeedClusterOverPout",&electron_eSeedClusterOverPout); + tree_->SetBranchAddress("electron_eSuperClusterOverP",&electron_eSuperClusterOverP); + tree_->SetBranchAddress("electron_eTopOvere5x5",&electron_eTopOvere5x5); + + tree_->SetBranchAddress("electron_deltaEtaEleClusterTrackAtCalo",&electron_deltaEtaEleClusterTrackAtCalo); + tree_->SetBranchAddress("electron_deltaEtaSeedClusterTrackAtCalo",&electron_deltaEtaSeedClusterTrackAtCalo); + tree_->SetBranchAddress("electron_deltaPhiSeedClusterTrackAtCalo",&electron_deltaPhiSeedClusterTrackAtCalo); + tree_->SetBranchAddress("electron_deltaEtaSeedClusterTrackAtVtx",&electron_deltaPhiSeedClusterTrackAtCalo); + tree_->SetBranchAddress("electron_deltaEtaSuperClusterTrackAtVtx",&electron_deltaEtaSuperClusterTrackAtVtx); + tree_->SetBranchAddress("electron_deltaPhiEleClusterTrackAtCalo",&electron_deltaPhiEleClusterTrackAtCalo); + tree_->SetBranchAddress("electron_deltaPhiSuperClusterTrackAtVtx",&electron_deltaPhiSuperClusterTrackAtVtx); + tree_->SetBranchAddress("electron_sCseedEta",&electron_sCseedEta); + + // electron gsf variables. + tree_->SetBranchAddress("electron_EtaRel",&electron_EtaRel); + tree_->SetBranchAddress("electron_dxy",&electron_dxy); + tree_->SetBranchAddress("electron_dz",&electron_dz); + tree_->SetBranchAddress("electron_nbOfMissingHits",&electron_nbOfMissingHits); + tree_->SetBranchAddress("electron_gsfCharge",&electron_gsfCharge); + + + tree_->SetBranchAddress("electron_numberOfBrems",&electron_numberOfBrems); + tree_->SetBranchAddress("electron_trackFbrem",&electron_trackFbrem); + tree_->SetBranchAddress("electron_fbrem",&electron_fbrem); + tree_->SetBranchAddress("electron_e5x5",&electron_e5x5); + tree_->SetBranchAddress("electron_e5x5Rel",&electron_e5x5Rel); + tree_->SetBranchAddress("electron_e1x5Overe5x5",&electron_e1x5Overe5x5); + tree_->SetBranchAddress("electron_e2x5MaxOvere5x5",&electron_e2x5MaxOvere5x5); + + // 5*5 cells cluster + // + + tree_->SetBranchAddress("electron_full5x5_e5x5",&electron_full5x5_e5x5); + tree_->SetBranchAddress("electron_full5x5_e5x5Rel",&electron_full5x5_e5x5Rel); + tree_->SetBranchAddress("electron_full5x5_sigmaIetaIeta",&electron_full5x5_sigmaIetaIeta); + tree_->SetBranchAddress("electron_full5x5_e1x5Overe5x5",&electron_full5x5_e1x5Overe5x5); + tree_->SetBranchAddress("electron_full5x5_e2x5BottomOvere5x5",&electron_full5x5_e2x5BottomOvere5x5); + tree_->SetBranchAddress("electron_full5x5_e2x5LeftOvere5x5",&electron_full5x5_e2x5LeftOvere5x5); + tree_->SetBranchAddress("electron_full5x5_e2x5MaxOvere5x5",&electron_full5x5_e2x5MaxOvere5x5); + tree_->SetBranchAddress("electron_full5x5_e2x5RightOvere5x5",&electron_full5x5_e2x5RightOvere5x5); + tree_->SetBranchAddress("electron_full5x5_e2x5TopOvere5x5",&electron_full5x5_e2x5TopOvere5x5); + + + + tree_->SetBranchAddress("electron_full5x5_eBottomOvere5x5",&electron_full5x5_eBottomOvere5x5); + tree_->SetBranchAddress("electron_full5x5_eLeftOvere5x5",&electron_full5x5_eLeftOvere5x5); + tree_->SetBranchAddress("electron_full5x5_eRightOvere5x5",&electron_full5x5_eRightOvere5x5); + tree_->SetBranchAddress("electron_full5x5_eTopOvere5x5",&electron_full5x5_eTopOvere5x5); + tree_->SetBranchAddress("electron_full5x5_hcalDepth1OverEcal",&electron_full5x5_hcalDepth1OverEcal); + tree_->SetBranchAddress("electron_full5x5_hcalDepth1OverEcalBc",&electron_full5x5_hcalDepth1OverEcalBc); + tree_->SetBranchAddress("electron_full5x5_hcalDepth2OverEcal",&electron_full5x5_hcalDepth2OverEcal); + tree_->SetBranchAddress("electron_full5x5_hcalDepth2OverEcalBc",&electron_full5x5_hcalDepth2OverEcalBc); + tree_->SetBranchAddress("electron_full5x5_hcalOverEcal",&electron_full5x5_hcalOverEcal); + tree_->SetBranchAddress("electron_full5x5_hcalOverEcalBc",&electron_full5x5_hcalOverEcalBc); + tree_->SetBranchAddress("electron_full5x5_r9",&electron_full5x5_r9); + + + + // Isolation block + tree_->SetBranchAddress("electron_neutralHadronIso",&electron_neutralHadronIso); + tree_->SetBranchAddress("electron_particleIso",&electron_particleIso); + tree_->SetBranchAddress("electron_photonIso",&electron_photonIso); + tree_->SetBranchAddress("electron_puChargedHadronIso",&electron_puChargedHadronIso); + tree_->SetBranchAddress("electron_trackIso",&electron_trackIso); + tree_->SetBranchAddress("electron_hcalDepth1OverEcal",&electron_hcalDepth1OverEcal); + tree_->SetBranchAddress("electron_hcalDepth2OverEcal",&electron_hcalDepth2OverEcal); + tree_->SetBranchAddress("electron_ecalPFClusterIso",&electron_ecalPFClusterIso); + tree_->SetBranchAddress("electron_hcalPFClusterIso",&electron_hcalPFClusterIso); + tree_->SetBranchAddress("electron_dr03TkSumPt",&electron_dr03TkSumPt); + + tree_->SetBranchAddress("electron_dr03EcalRecHitSumEt",&electron_dr03EcalRecHitSumEt); + tree_->SetBranchAddress("electron_dr03HcalDepth1TowerSumEt",&electron_dr03HcalDepth1TowerSumEt); + tree_->SetBranchAddress("electron_dr03HcalDepth1TowerSumEtBc",&electron_dr03HcalDepth1TowerSumEtBc); + tree_->SetBranchAddress("electron_dr03HcalDepth2TowerSumEt",&electron_dr03HcalDepth2TowerSumEt); + tree_->SetBranchAddress("electron_dr03HcalDepth2TowerSumEtBc",&electron_dr03HcalDepth2TowerSumEtBc); + tree_->SetBranchAddress("electron_pfSumPhotonEt",&electron_pfSumPhotonEt); + tree_->SetBranchAddress("electron_pfSumChargedHadronPt",&electron_pfSumChargedHadronPt); + tree_->SetBranchAddress("electron_pfSumNeutralHadronEt",&electron_pfSumNeutralHadronEt); + tree_->SetBranchAddress("electron_pfSumPUPt",&electron_pfSumPUPt); + + tree_->SetBranchAddress("electron_dr04EcalRecHitSumEt",&electron_dr04EcalRecHitSumEt); + tree_->SetBranchAddress("electron_dr04HcalDepth1TowerSumEt",&electron_dr04HcalDepth1TowerSumEt); + tree_->SetBranchAddress("electron_dr04HcalDepth1TowerSumEtBc",&electron_dr04HcalDepth1TowerSumEtBc); + tree_->SetBranchAddress("electron_dr04HcalDepth2TowerSumEt",&electron_dr04HcalDepth2TowerSumEt); + tree_->SetBranchAddress("electron_dr04HcalDepth2TowerSumEtBc",&electron_dr04HcalDepth2TowerSumEtBc); + tree_->SetBranchAddress("electron_dr04HcalTowerSumEt",&electron_dr04HcalTowerSumEt); + tree_->SetBranchAddress("electron_dr04HcalTowerSumEtBc",&electron_dr04HcalTowerSumEtBc); + symbolTable_.add_variable("isB",isB); symbolTable_.add_variable("isBB",isBB); symbolTable_.add_variable("isGBB",isGBB); @@ -1066,12 +1503,10 @@ class NanoXTree symbolTable_.add_variable("isUD",isUD); symbolTable_.add_variable("isG",isG); -// symbolTable_.add_variable("fromLLP",fromLLP); - - //symbolTable_.add_variable("rand",rand); - //symbolTable_.add_variable("ctau",ctau); + symbolTable_.add_variable("rand",rand); + symbolTable_.add_variable("ctau",ctau); - symbolTable_.add_variable("logpt",logpt); + symbolTable_.add_variable("pt",pt); symbolTable_.add_variable("isLLP_RAD" ,isLLP_RAD) ; symbolTable_.add_variable("isLLP_MU" ,isLLP_MU) ; symbolTable_.add_variable("isLLP_E",isLLP_E) ; @@ -1087,7 +1522,7 @@ class NanoXTree symbolTable_.add_variable("isLLP_BB" ,isLLP_BB) ; symbolTable_.add_variable("isLLP_BBMU" ,isLLP_BBMU) ; symbolTable_.add_variable("isLLP_BBE" ,isLLP_BBE) ; - symbolTable_.add_variable("isPU",isPU); + symbolTable_.add_variable("isPU",isPU); for (auto selectstring: selectors) @@ -1167,8 +1602,6 @@ class NanoXTree //just a sanity check - // long jetIndex = jetorigin_jetIdx[jet]; - // std::cout<<"index is : "<< jetorigin_jetIdx[jet] << " jet eta is : "<< Jet_eta[jet] << " global jet is : " <0.01) { std::cout<<"Encountered mismatch between standard nanoaod jets and xtag info"<0.5) - { - return false; - } - - //setup variables for exp evaluation isB = jetorigin_isB[jet]; isBB = jetorigin_isBB[jet]; isGBB = jetorigin_isGBB[jet]; @@ -1233,8 +1660,6 @@ class NanoXTree isUD = jetorigin_isUD[jet]; isG = jetorigin_isG[jet]; -// Add here LLP flavour - isLLP_RAD= jetorigin_isLLP_RAD[jet]; isLLP_MU= jetorigin_isLLP_MU[jet]; isLLP_E= jetorigin_isLLP_E[jet]; @@ -1250,6 +1675,7 @@ class NanoXTree isLLP_BB= jetorigin_isLLP_BB[jet]; isLLP_BBMU= jetorigin_isLLP_BBMU[jet]; isLLP_BBE= jetorigin_isLLP_BBE[jet]; + isPU = jetorigin_isPU[jet]; } @@ -1270,7 +1696,6 @@ class NanoXTree isS = 0; isUD = 0; isG = 0; - //fromLLP = 0; isLLP_RAD = 0; isLLP_MU = 0; isLLP_E = 0; @@ -1292,7 +1717,7 @@ class NanoXTree rand = uniform_dist_(randomGenerator_); //ctau = 1e9; - logpt = std::log10(std::max(0.1f,global_pt[jet])); + pt = global_pt[jet]; for (auto setter: setters_) { @@ -1316,40 +1741,35 @@ class NanoXTree int getJetClass(unsigned int jet) { if (not addTruth_) return 0; //default class - // if (jetorigin_fromLLP[jet]<0.5) - // { - if (jetorigin_isB[jet]>0.5) return 0; - if (jetorigin_isBB[jet]>0.5) return 1; - if (jetorigin_isGBB[jet]>0.5) return 2; - if (jetorigin_isLeptonic_B[jet]>0.5) return 3; - if (jetorigin_isLeptonic_C[jet]>0.5) return 4; - if (jetorigin_isC[jet]>0.5) return 5; - if (jetorigin_isCC[jet]>0.5) return 6; - if (jetorigin_isGCC[jet]>0.5) return 7; - if (jetorigin_isS[jet]>0.5) return 8; - if (jetorigin_isUD[jet]>0.5) return 9; - if (jetorigin_isG[jet]>0.5) return 10; - if (jetorigin_isPU[jet]>0.5) return 12; - if (jetorigin_isLLP_RAD[jet]>0.5) return 13 ; - if (jetorigin_isLLP_MU[jet]>0.5) return 14 ; - if (jetorigin_isLLP_E[jet]>0.5) return 15; - if (jetorigin_isLLP_Q[jet]>0.5) return 16; - if (jetorigin_isLLP_QMU[jet]>0.5) return 17; - if (jetorigin_isLLP_QE[jet]>0.5) return 18; - if (jetorigin_isLLP_QQ[jet]>0.5) return 19; - if (jetorigin_isLLP_QQMU[jet]>0.5) return 20; - if (jetorigin_isLLP_QQE[jet]>0.5) return 21; - if (jetorigin_isLLP_B[jet]>0.5) return 22; - if (jetorigin_isLLP_BMU[jet]>0.5) return 23; - if (jetorigin_isLLP_BE[jet]>0.5) return 24; - if (jetorigin_isLLP_BB[jet]>0.5) return 25; - if (jetorigin_isLLP_BBMU[jet]>0.5) return 26; - if (jetorigin_isLLP_BBE[jet]>0.5) return 27; - // } - /* else - { - return 11; - }*/ + + if (jetorigin_isB[jet]>0.5) return 0; + if (jetorigin_isBB[jet]>0.5) return 1; + if (jetorigin_isGBB[jet]>0.5) return 2; + if (jetorigin_isLeptonic_B[jet]>0.5) return 3; + if (jetorigin_isLeptonic_C[jet]>0.5) return 4; + if (jetorigin_isC[jet]>0.5) return 5; + if (jetorigin_isCC[jet]>0.5) return 6; + if (jetorigin_isGCC[jet]>0.5) return 7; + if (jetorigin_isS[jet]>0.5) return 8; + if (jetorigin_isUD[jet]>0.5) return 9; + if (jetorigin_isG[jet]>0.5) return 10; + if (jetorigin_isPU[jet]>0.5) return 12; + if (jetorigin_isLLP_RAD[jet]>0.5) return 13; + if (jetorigin_isLLP_MU[jet]>0.5) return 14; + if (jetorigin_isLLP_E[jet]>0.5) return 15; + if (jetorigin_isLLP_Q[jet]>0.5) return 16; + if (jetorigin_isLLP_QMU[jet]>0.5) return 17; + if (jetorigin_isLLP_QE[jet]>0.5) return 18; + if (jetorigin_isLLP_QQ[jet]>0.5) return 19; + if (jetorigin_isLLP_QQMU[jet]>0.5) return 20; + if (jetorigin_isLLP_QQE[jet]>0.5) return 21; + if (jetorigin_isLLP_B[jet]>0.5) return 22; + if (jetorigin_isLLP_BMU[jet]>0.5) return 23; + if (jetorigin_isLLP_BE[jet]>0.5) return 24; + if (jetorigin_isLLP_BB[jet]>0.5) return 25; + if (jetorigin_isLLP_BBMU[jet]>0.5) return 26; + if (jetorigin_isLLP_BBE[jet]>0.5) return 27; + return -1; } @@ -1358,16 +1778,15 @@ class NanoXTree UnpackedTree& unpackedTree ) { - //tree_->GetEntry(entry); - - if (this->njets()!=length_cpf or this->njets()!=nnpflength or this->njets()!=nsvlength) + if (this->njets()!=nglobal + or this->njets()!=nlength + or this->njets()!=ncsv + ) { std::cout<<"Encountered weird event with unclear numbers of jets"< value.size()) return false; From a1dd668a169afc92ef39bcec781dba7afe5c6c0f Mon Sep 17 00:00:00 2001 From: Haifa Rejeb Sfar Date: Wed, 26 Feb 2020 17:53:59 +0100 Subject: [PATCH 3/3] adding cpf vars to the unpacker --- Unpacker/unpackNanoXFast.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Unpacker/unpackNanoXFast.cc b/Unpacker/unpackNanoXFast.cc index d90d6ff..a6dd7dc 100644 --- a/Unpacker/unpackNanoXFast.cc +++ b/Unpacker/unpackNanoXFast.cc @@ -143,6 +143,11 @@ class UnpackedTree float cpf_matchedSV[maxEntries_cpf]; float cpf_matchedMuon[maxEntries_cpf]; float cpf_matchedElectron[maxEntries_cpf]; + + float cpf_track_numberOfValidPixelHits [maxEntries_cpf] ; + float cpf_track_pixelLayersWithMeasurement[maxEntries_cpf]; + float cpf_track_numberOfValidStripHits[maxEntries_cpf]; + float cpf_track_stripLayersWithMeasurement[maxEntries_cpf]; unsigned int nnpf; float npf_ptrel[maxEntries_npf]; @@ -485,6 +490,10 @@ class UnpackedTree tree_->Branch("cpf_matchedSV",&cpf_matchedSV,"cpf_matchedSV[ncpf]/F",bufferSize); tree_->Branch("cpf_matchedMuon",&cpf_matchedMuon,"cpf_matchedMuon[ncpf]/F",bufferSize); tree_->Branch("cpf_matchedElectron",&cpf_matchedElectron,"cpf_matchedElectron[ncpf]/F",bufferSize); + tree_->Branch("cpf_track_numberOfValidPixelHits", &cpf_track_numberOfValidPixelHits , "cpf_track_numberOfValidPixelHits[ncpf]/F", bufferSize) ; + tree_->Branch("cpf_track_pixelLayersWithMeasurement", &cpf_track_pixelLayersWithMeasurement, " cpf_track_pixelLayersWithMeasurement[ncpf]/F", bufferSize); + tree_->Branch("cpf_track_numberOfValidStripHits", &cpf_track_numberOfValidStripHits ,"cpf_track_numberOfValidStripHits[ncpf]/F", bufferSize); + tree_->Branch("cpf_track_stripLayersWithMeasurement", &cpf_track_stripLayersWithMeasurement, "cpf_track_stripLayersWithMeasurement[ncpf]/F", bufferSize); tree_->Branch("nnpf",&nnpf,"nnpf/I",bufferSize); @@ -858,6 +867,12 @@ class NanoXTree int cpf_matchedSV[maxEntries]; int cpf_matchedMuon[maxEntries]; int cpf_matchedElectron[maxEntries]; + + int cpf_track_numberOfValidPixelHits[maxEntries]; + int cpf_track_pixelLayersWithMeasurement[maxEntries]; + int cpf_track_numberOfValidStripHits[maxEntries]; + int cpf_track_stripLayersWithMeasurement[maxEntries]; + unsigned int ncsv; float csv_trackSumJetEtRatio[maxEntries]; @@ -1282,6 +1297,10 @@ class NanoXTree tree_->SetBranchAddress("cpf_matchedSV",&cpf_matchedSV); tree_->SetBranchAddress("cpf_matchedMuon",&cpf_matchedMuon); tree_->SetBranchAddress("cpf_matchedElectron",&cpf_matchedElectron); + tree_->SetBranchAddress("cpf_track_numberOfValidPixelHits", &cpf_track_numberOfValidPixelHits); + tree_->SetBranchAddress("cpf_track_pixelLayersWithMeasurement", &cpf_track_pixelLayersWithMeasurement) ; + tree_->SetBranchAddress("cpf_track_numberOfValidStripHits" , &cpf_track_numberOfValidStripHits) ; + tree_->SetBranchAddress("cpf_track_stripLayersWithMeasurement" , &cpf_track_stripLayersWithMeasurement); tree_->SetBranchAddress("nnpf",&nnpf); @@ -1919,7 +1938,13 @@ class NanoXTree unpackedTree.cpf_matchedSV[i] = cpf_matchedSV[cpf_offset+i]; unpackedTree.cpf_matchedMuon[i] = cpf_matchedMuon[cpf_offset+i]; unpackedTree.cpf_matchedElectron[i] = cpf_matchedElectron[cpf_offset+i]; + + unpackedTree.cpf_track_numberOfValidPixelHits[i] = cpf_track_numberOfValidPixelHits[cpf_offset+i] ; + unpackedTree.cpf_track_pixelLayersWithMeasurement[i] = cpf_track_pixelLayersWithMeasurement[cpf_offset+i]; + unpackedTree.cpf_track_numberOfValidStripHits[i] = cpf_track_numberOfValidStripHits[cpf_offset+i] ; + unpackedTree.cpf_track_stripLayersWithMeasurement[i] = cpf_track_stripLayersWithMeasurement[cpf_offset+i] ; } + int npf_offset = 0;