diff --git a/Unpacker/unpackNanoXFast.cc b/Unpacker/unpackNanoXFast.cc index 3bd732c..a6dd7dc 100644 --- a/Unpacker/unpackNanoXFast.cc +++ b/Unpacker/unpackNanoXFast.cc @@ -15,7 +15,7 @@ #include "cmdParser.hpp" #include "exprtk.hpp" - + class UnpackedTree { public: @@ -24,61 +24,82 @@ class UnpackedTree TTree* tree_; - static constexpr int maxEntries = 25; + 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_isUndefined; + 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 : + 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; - - 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_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_n60; + float global_n90; + float global_chargedEmEnergyFraction; + float global_chargedHadronEnergyFraction; + float global_chargedMuEnergyFraction; + float global_electronEnergyFraction; - - 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_jetmassdroprel[maxEntries]; - float cpf_relIso01[maxEntries]; + 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 csv_trackSumJetEtRatio; float csv_trackSumJetDeltaR; @@ -89,36 +110,256 @@ 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]; + + 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]; - float npf_deltaR[maxEntries]; - float npf_isGamma[maxEntries]; - float npf_hcal_fraction[maxEntries]; - float npf_drminsv[maxEntries]; - float npf_puppi_weight[maxEntries]; - float npf_jetmassdroprel[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]; - - 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), @@ -131,25 +372,49 @@ 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_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_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); - tree_->Branch("jetorigin_fromLLP",&jetorigin_fromLLP,"jetorigin_fromLLP/I",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 { @@ -160,7 +425,42 @@ 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_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); + 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("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); @@ -176,6 +476,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); @@ -183,31 +485,32 @@ 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_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("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("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_jetmassdroprel",&npf_jetmassdroprel,"npf_jetmassdroprel[nnpf]/F",bufferSize); - tree_->Branch("npf_relIso01",&npf_relIso01,"npf_relIso01[nnpf]/F",bufferSize); + tree_->Branch("npf_relmassdrop",&npf_relmassdrop,"npf_relmassdrop[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); @@ -219,12 +522,187 @@ 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("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("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[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 } @@ -281,39 +759,87 @@ class NanoXTree float GenJet_pt[maxEntries]; unsigned int njetorigin; - float jetorigin_isPU[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_decay_angle[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]; - 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]; - - //float jetorigin_llpmass_reco[maxEntries]; - + unsigned int nglobal; float global_pt[maxEntries]; float global_eta[maxEntries]; - float global_rho; + float global_mass[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 xsecweight; float processId; float isData; - unsigned int ncpflength; - float cpflength_length[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[maxEntries]; + unsigned int ncpf; float cpf_trackEtaRel[maxEntries]; float cpf_trackPtRel[maxEntries]; float cpf_trackPPar[maxEntries]; @@ -327,6 +853,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]; @@ -334,10 +862,19 @@ 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]; + + 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[maxEntries]; + + unsigned int ncsv; float csv_trackSumJetEtRatio[maxEntries]; float csv_trackSumJetDeltaR[maxEntries]; float csv_vertexCategory[maxEntries]; @@ -348,24 +885,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_jetmassdroprel[maxEntries]; - float npf_relIso01[maxEntries]; - - unsigned int nsvlength; - float svlength_length[maxEntries]; + float npf_relmassdrop[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]; @@ -378,12 +913,191 @@ class NanoXTree float sv_costhetasvpv[maxEntries]; float sv_enratio[maxEntries]; - unsigned int nlegacyTag[maxEntries]; - float legacyTag_median_dxy[maxEntries]; - float legacyTag_median_trackSip2dSig[maxEntries]; - float legacyTag_alpha[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_deta[maxEntries]; + float muon_dphi[maxEntries]; + float muon_charge [maxEntries]; + float muon_energy[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_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 nelectron; + + unsigned int nelec; + 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_; @@ -391,7 +1105,7 @@ class NanoXTree typedef exprtk::expression Expression; typedef exprtk::parser Parser; - //for the symbol table + float isB; float isBB; float isGBB; @@ -403,11 +1117,27 @@ class NanoXTree float isS; float isUD; float isG; - float fromLLP; + + 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 pt; float ctau; SymbolTable symbolTable_; @@ -440,11 +1170,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); @@ -457,7 +1195,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 ) ; + + } else { @@ -466,16 +1221,54 @@ 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("ncpflength",&ncpflength); - tree_->SetBranchAddress("cpflength_length",&cpflength_length); + 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); + 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); + 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); @@ -490,6 +1283,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); @@ -497,38 +1292,32 @@ 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("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("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); 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_jetmassdroprel",&npf_jetmassdroprel); - tree_->SetBranchAddress("npf_relIso01",&npf_relIso01); - - tree_->SetBranchAddress("nsvlength",&nsvlength); - tree_->SetBranchAddress("svlength_length",&svlength_length); + tree_->SetBranchAddress("npf_relmassdrop",&npf_relmassdrop); 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); @@ -541,13 +1330,184 @@ class NanoXTree tree_->SetBranchAddress("sv_costhetasvpv",&sv_costhetasvpv); tree_->SetBranchAddress("sv_enratio",&sv_enratio); - 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("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_dphi",&muon_dphi); + tree_->SetBranchAddress("muon_deta",&muon_deta); + tree_->SetBranchAddress("muon_charge",&muon_charge); + tree_->SetBranchAddress("muon_energy",&muon_energy); + 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_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("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); @@ -562,13 +1522,27 @@ 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("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) ; + 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) { @@ -674,12 +1648,12 @@ class NanoXTree //do not apply jet ID; require at least 2 constituents & no overlap with leptons //garbage jets are anyway not considered since training is done on matched jets only - if (Jet_nConstituents[jet]<2 or Jet_cleanmask[jet]==0) + if (Jet_nConstituents[jet]<2) { return false; } - if (Jet_pt[jet]<20. or std::fabs(Jet_eta[jet])>2.4) + if (std::fabs(Jet_eta[jet])>2.4) { return false; } @@ -691,28 +1665,37 @@ class NanoXTree return false; } - if (jetorigin_isPU[jet]>0.5) - { - return false; - } - - //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; + 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,14 +1715,28 @@ class NanoXTree isS = 0; isUD = 0; isG = 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; - logpt = std::log10(std::max(0.1f,global_pt[jet])); + //ctau = 1e9; + pt = global_pt[jet]; for (auto setter: setters_) { @@ -763,25 +1760,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; - } - 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; } @@ -790,16 +1797,15 @@ class NanoXTree UnpackedTree& unpackedTree ) { - //tree_->GetEntry(entry); - - if (this->njets()!=ncpflength 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; @@ -1213,10 +2412,10 @@ int main(int argc, char **argv) std::cout<<"Number of independent inputs: "<> 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) {