.. _program_listing_file_xAODAnaHelpers_JetContainer.h: Program Listing for File JetContainer.h ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``xAODAnaHelpers/JetContainer.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef xAODAnaHelpers_JetContainer_H #define xAODAnaHelpers_JetContainer_H #include #include #include #include #include "xAODJet/JetContainer.h" #include #include #include #include #include "InDetTrackSelectionTool/InDetTrackSelectionTool.h" namespace xAH { class JetContainer : public ParticleContainer { public: JetContainer(const std::string& name = "jet", const std::string& detailStr="", float units = 1e3, bool mc = false); virtual ~JetContainer(); virtual void setTree (TTree *tree); virtual void setBranches(TTree *tree); virtual void clear(); virtual void FillJet( const xAOD::Jet* jet, const xAOD::Vertex* pv, int pvLocation ); virtual void FillJet( const xAOD::IParticle* particle, const xAOD::Vertex* pv, int pvLocation ); virtual void updateParticle(uint idx, Jet& jet); //template // void setBranch(TTree* tree, std::string varName, std::vector* localVectorPtr); private: InDet::InDetTrackSelectionTool * m_trkSelTool; // // Vector branches // rapidity std::vector *m_rapidity; // trigger std::vector *m_isTrigMatched; std::vector > *m_isTrigMatchedToChain; std::vector *m_listTrigChains; // clean std::vector *m_Timing; std::vector *m_LArQuality; std::vector *m_HECQuality; std::vector *m_NegativeE; std::vector *m_AverageLArQF; std::vector *m_BchCorrCell; std::vector *m_N90Constituents; std::vector *m_LArBadHVEnergyFrac; std::vector *m_LArBadHVNCell; std::vector *m_ChargedFraction; std::vector *m_OotFracClusters5; std::vector *m_OotFracClusters10; std::vector *m_LeadingClusterPt; std::vector *m_LeadingClusterSecondLambda; std::vector *m_LeadingClusterCenterLambda; std::vector *m_LeadingClusterSecondR; std::vector *m_clean_passLooseBad; std::vector *m_clean_passLooseBadLLP; std::vector *m_clean_passLooseBadUgly; std::vector *m_clean_passLooseBadTrigger; std::vector *m_clean_passLooseBadTriggerUgly; std::vector *m_clean_passTightBad; std::vector *m_clean_passTightBadUgly; // energy std::vector *m_HECFrac; std::vector *m_EMFrac; std::vector *m_CentroidR; std::vector *m_FracSamplingMax; std::vector *m_FracSamplingMaxIndex; std::vector *m_LowEtConstituentsFrac; std::vector *m_GhostMuonSegmentCount; std::vector *m_Width; // scales std::vector *m_emScalePt; std::vector *m_constScalePt; std::vector *m_pileupScalePt; std::vector *m_originConstitScalePt; std::vector *m_etaJESScalePt; std::vector *m_gscScalePt; std::vector *m_jmsScalePt; std::vector *m_insituScalePt; std::vector *m_emScaleM; std::vector *m_constScaleM; std::vector *m_pileupScaleM; std::vector *m_originConstitScaleM; std::vector *m_etaJESScaleM; std::vector *m_gscScaleM; std::vector *m_jmsScaleM; std::vector *m_insituScaleM; // constScale Eta std::vector *m_constScaleEta; // detector Eta std::vector *m_detectorEta; // layer std::vector< std::vector > *m_EnergyPerSampling; // tracksAll std::vector< std::vector > *m_NumTrkPt1000; std::vector< std::vector > *m_SumPtTrkPt1000; std::vector< std::vector > *m_TrackWidthPt1000; std::vector< std::vector > *m_NumTrkPt500; std::vector< std::vector > *m_SumPtTrkPt500; std::vector< std::vector > *m_TrackWidthPt500; std::vector< std::vector > *m_JVF; // trackPV std::vector *m_NumTrkPt1000PV; std::vector *m_SumPtTrkPt1000PV; std::vector *m_TrackWidthPt1000PV; std::vector *m_NumTrkPt500PV; std::vector *m_SumPtTrkPt500PV; std::vector *m_TrackWidthPt500PV; std::vector *m_JVFPV; // trackAll or trackPV std::vector *m_Jvt; std::vector *m_JvtPass_Loose; std::vector< std::vector > *m_JvtEff_SF_Loose; std::vector *m_JvtPass_Medium; std::vector< std::vector > *m_JvtEff_SF_Medium; std::vector *m_JvtPass_Tight; std::vector< std::vector > *m_JvtEff_SF_Tight; std::vector *m_JvtJvfcorr; std::vector *m_JvtRpt; std::vector *m_fJvt; std::vector *m_fJvtPass_Loose; std::vector< std::vector > *m_fJvtEff_SF_Loose; std::vector *m_fJvtPass_Medium; std::vector< std::vector > *m_fJvtEff_SF_Medium; std::vector *m_fJvtPass_Tight; std::vector< std::vector > *m_fJvtEff_SF_Tight; // NNJvt std::vector *m_NNJvt; std::vector *m_NNJvtPass; std::vector *m_JvtPass_FixedEffPt; std::vector< std::vector > *m_JvtEff_SF_FixedEffPt; std::vector *m_JvtPass_TightFwd; std::vector< std::vector > *m_JvtEff_SF_TightFwd; // chargedPFOPV std::vector *m_SumPtChargedPFOPt500PV; std::vector *m_fCharged; // allTrack std::vector *m_GhostTrackCount; std::vector *m_GhostTrackPt; std::vector< std::vector > *m_GhostTrack_pt; std::vector< std::vector > *m_GhostTrack_qOverP; std::vector< std::vector > *m_GhostTrack_eta; std::vector< std::vector > *m_GhostTrack_phi; std::vector< std::vector > *m_GhostTrack_e; std::vector< std::vector > *m_GhostTrack_d0; std::vector< std::vector > *m_GhostTrack_z0; // allTrackDetail std::vector< std::vector > *m_GhostTrack_nPixelHits; std::vector< std::vector > *m_GhostTrack_nSCTHits; std::vector< std::vector > *m_GhostTrack_nTRTHits; std::vector< std::vector > *m_GhostTrack_nPixelSharedHits; std::vector< std::vector > *m_GhostTrack_nPixelSplitHits; std::vector< std::vector > *m_GhostTrack_nInnermostPixelLayerHits; std::vector< std::vector > *m_GhostTrack_nInnermostPixelLayerSharedHits; std::vector< std::vector > *m_GhostTrack_nInnermostPixelLayerSplitHits; std::vector< std::vector > *m_GhostTrack_nNextToInnermostPixelLayerHits; std::vector< std::vector > *m_GhostTrack_nNextToInnermostPixelLayerSharedHits; std::vector< std::vector > *m_GhostTrack_nNextToInnermostPixelLayerSplitHits; // constituent std::vector< int > *m_numConstituents; std::vector< std::vector > *m_constituentWeights; std::vector< std::vector > *m_constituent_pt; std::vector< std::vector > *m_constituent_eta; std::vector< std::vector > *m_constituent_phi; std::vector< std::vector > *m_constituent_e; // flavTag std::vector *m_HadronConeExclTruthLabelID; std::vector *m_HadronConeExclExtendedTruthLabelID; std::vector *m_DL1r; std::vector *m_DL1r_pu; std::vector *m_DL1r_pc; std::vector *m_DL1r_pb; std::vector *m_DL1dv00; std::vector *m_DL1dv00_pu; std::vector *m_DL1dv00_pc; std::vector *m_DL1dv00_pb; std::vector *m_DL1dv01; std::vector *m_DL1dv01_pu; std::vector *m_DL1dv01_pc; std::vector *m_DL1dv01_pb; std::vector *m_fastDIPS; std::vector *m_fastDIPS_pu; std::vector *m_fastDIPS_pb; std::vector *m_fastDIPS_pc; std::vector *m_GN1; std::vector *m_GN1_pu; std::vector *m_GN1_pc; std::vector *m_GN1_pb; std::vector *m_GN2v00LegacyWP; std::vector *m_GN2v00LegacyWP_pu; std::vector *m_GN2v00LegacyWP_pc; std::vector *m_GN2v00LegacyWP_pb; std::vector *m_GN2v00NewAliasWP; std::vector *m_GN2v00NewAliasWP_pu; std::vector *m_GN2v00NewAliasWP_pc; std::vector *m_GN2v00NewAliasWP_pb; std::vector *m_GN2v01; std::vector *m_GN2v01_pu; std::vector *m_GN2v01_pc; std::vector *m_GN2v01_pb; std::vector *m_GN2v01_ptau; // Jet Fitter std::vector *m_JetFitter_nVTX ; std::vector *m_JetFitter_nSingleTracks ; std::vector *m_JetFitter_nTracksAtVtx ; std::vector *m_JetFitter_mass ; std::vector *m_JetFitter_energyFraction ; std::vector *m_JetFitter_significance3d ; std::vector *m_JetFitter_deltaeta ; std::vector *m_JetFitter_deltaphi ; std::vector *m_JetFitter_N2Tpar ; // SV Details std::vector *m_SV0; std::vector *m_sv0_NGTinSvx ; std::vector *m_sv0_N2Tpair ; std::vector *m_sv0_massvx ; std::vector *m_sv0_efracsvx ; std::vector *m_sv0_normdist ; std::vector *m_SV1; std::vector *m_SV1IP3D; std::vector *m_COMBx; std::vector *m_sv1_pu ; std::vector *m_sv1_pb ; std::vector *m_sv1_pc ; std::vector *m_sv1_c ; std::vector *m_sv1_cu ; std::vector *m_sv1_NGTinSvx ; std::vector *m_sv1_N2Tpair ; std::vector *m_sv1_massvx ; std::vector *m_sv1_efracsvx ; std::vector *m_sv1_normdist ; std::vector *m_sv1_Lxy ; std::vector *m_sv1_sig3d ; std::vector *m_sv1_L3d ; std::vector *m_sv1_distmatlay; std::vector *m_sv1_dR ; // IP3D std::vector *m_IP2D_pu ; std::vector *m_IP2D_pb ; std::vector *m_IP2D_pc ; std::vector *m_IP2D ; std::vector *m_IP2D_c ; std::vector *m_IP2D_cu ; std::vector *m_nIP2DTracks ; std::vector > *m_IP2D_gradeOfTracks ; std::vector > *m_IP2D_flagFromV0ofTracks ; std::vector > *m_IP2D_valD0wrtPVofTracks ; std::vector > *m_IP2D_sigD0wrtPVofTracks ; std::vector > *m_IP2D_weightBofTracks ; std::vector > *m_IP2D_weightCofTracks ; std::vector > *m_IP2D_weightUofTracks ; std::vector *m_IP3D_pu ; std::vector *m_IP3D_pb ; std::vector *m_IP3D_pc ; std::vector *m_IP3D ; std::vector *m_IP3D_c ; std::vector *m_IP3D_cu ; std::vector *m_nIP3DTracks ; std::vector > *m_IP3D_gradeOfTracks ; std::vector > *m_IP3D_flagFromV0ofTracks ; std::vector > *m_IP3D_valD0wrtPVofTracks ; std::vector > *m_IP3D_sigD0wrtPVofTracks ; std::vector > *m_IP3D_valZ0wrtPVofTracks ; std::vector > *m_IP3D_sigZ0wrtPVofTracks ; std::vector > *m_IP3D_weightBofTracks ; std::vector > *m_IP3D_weightCofTracks ; std::vector > *m_IP3D_weightUofTracks ; std::vector *m_vtxOnlineValid; std::vector *m_vtxHadDummy; std::vector *m_bs_online_vx; std::vector *m_bs_online_vy; std::vector *m_bs_online_vz; std::vector *m_vtx_offline_x0; std::vector *m_vtx_offline_y0; std::vector *m_vtx_offline_z0; std::vector *m_vtx_online_x0; std::vector *m_vtx_online_y0; std::vector *m_vtx_online_z0; std::vector *m_vtx_online_bkg_x0; std::vector *m_vtx_online_bkg_y0; std::vector *m_vtx_online_bkg_z0; struct btagOpPoint { bool m_mc; std::string m_accessorName; Jet::BTaggerOP m_op = Jet::BTaggerOP::None; bool m_isContinuous; // branches std::vector* m_isTag; std::vector< std::vector >* m_sf; std::vector< std::vector >* m_ineffSf; // for continuous btagOpPoint(bool mc, const std::string& tagger, const std::string& wp) : m_mc(mc), m_accessorName(tagger+"_"+wp) { m_isTag = new std::vector(); m_sf = new std::vector< std::vector >(); m_isContinuous = (wp == "Continuous"); if(m_isContinuous) m_ineffSf = new std::vector< std::vector >(); else if(m_accessorName=="DL1r_FixedCutBEff_60") m_op=Jet::BTaggerOP::DL1r_FixedCutBEff_60; else if(m_accessorName=="DL1r_FixedCutBEff_70") m_op=Jet::BTaggerOP::DL1r_FixedCutBEff_70; else if(m_accessorName=="DL1r_FixedCutBEff_77") m_op=Jet::BTaggerOP::DL1r_FixedCutBEff_77; else if(m_accessorName=="DL1r_FixedCutBEff_85") m_op=Jet::BTaggerOP::DL1r_FixedCutBEff_85; else if(m_accessorName=="DL1dv00_FixedCutBEff_60") m_op=Jet::BTaggerOP::DL1dv00_FixedCutBEff_60; else if(m_accessorName=="DL1dv00_FixedCutBEff_70") m_op=Jet::BTaggerOP::DL1dv00_FixedCutBEff_70; else if(m_accessorName=="DL1dv00_FixedCutBEff_77") m_op=Jet::BTaggerOP::DL1dv00_FixedCutBEff_77; else if(m_accessorName=="DL1dv00_FixedCutBEff_85") m_op=Jet::BTaggerOP::DL1dv00_FixedCutBEff_85; else if(m_accessorName=="DL1dv01_FixedCutBEff_60") m_op=Jet::BTaggerOP::DL1dv01_FixedCutBEff_60; else if(m_accessorName=="DL1dv01_FixedCutBEff_70") m_op=Jet::BTaggerOP::DL1dv01_FixedCutBEff_70; else if(m_accessorName=="DL1dv01_FixedCutBEff_77") m_op=Jet::BTaggerOP::DL1dv01_FixedCutBEff_77; else if(m_accessorName=="DL1dv01_FixedCutBEff_85") m_op=Jet::BTaggerOP::DL1dv01_FixedCutBEff_85; else if(m_accessorName=="GN120220509_FixedCutBEff_60") m_op=Jet::BTaggerOP::GN120220509_FixedCutBEff_60; else if(m_accessorName=="GN120220509_FixedCutBEff_70") m_op=Jet::BTaggerOP::GN120220509_FixedCutBEff_70; else if(m_accessorName=="GN120220509_FixedCutBEff_77") m_op=Jet::BTaggerOP::GN120220509_FixedCutBEff_77; else if(m_accessorName=="GN120220509_FixedCutBEff_85") m_op=Jet::BTaggerOP::GN120220509_FixedCutBEff_85; else if(m_accessorName=="GN2v00LegacyWP_FixedCutBEff_60") m_op=Jet::BTaggerOP::GN2v00LegacyWP_FixedCutBEff_60; else if(m_accessorName=="GN2v00LegacyWP_FixedCutBEff_70") m_op=Jet::BTaggerOP::GN2v00LegacyWP_FixedCutBEff_70; else if(m_accessorName=="GN2v00LegacyWP_FixedCutBEff_77") m_op=Jet::BTaggerOP::GN2v00LegacyWP_FixedCutBEff_77; else if(m_accessorName=="GN2v00LegacyWP_FixedCutBEff_85") m_op=Jet::BTaggerOP::GN2v00LegacyWP_FixedCutBEff_85; else if(m_accessorName=="GN2v00NewAliasWP_FixedCutBEff_60") m_op=Jet::BTaggerOP::GN2v00NewAliasWP_FixedCutBEff_60; else if(m_accessorName=="GN2v00NewAliasWP_FixedCutBEff_70") m_op=Jet::BTaggerOP::GN2v00NewAliasWP_FixedCutBEff_70; else if(m_accessorName=="GN2v00NewAliasWP_FixedCutBEff_77") m_op=Jet::BTaggerOP::GN2v00NewAliasWP_FixedCutBEff_77; else if(m_accessorName=="GN2v00NewAliasWP_FixedCutBEff_85") m_op=Jet::BTaggerOP::GN2v00NewAliasWP_FixedCutBEff_85; else if(m_accessorName=="GN2v01_FixedCutBEff_65") m_op=Jet::BTaggerOP::GN2v01_FixedCutBEff_65; else if(m_accessorName=="GN2v01_FixedCutBEff_70") m_op=Jet::BTaggerOP::GN2v01_FixedCutBEff_70; else if(m_accessorName=="GN2v01_FixedCutBEff_77") m_op=Jet::BTaggerOP::GN2v01_FixedCutBEff_77; else if(m_accessorName=="GN2v01_FixedCutBEff_85") m_op=Jet::BTaggerOP::GN2v01_FixedCutBEff_85; else if(m_accessorName=="GN2v01_FixedCutBEff_90") m_op=Jet::BTaggerOP::GN2v01_FixedCutBEff_90; } ~btagOpPoint() { delete m_isTag; delete m_sf; if(m_isContinuous) delete m_ineffSf; } void setTree(TTree *tree, const std::string& jetName) { std::string branch = m_isContinuous ? "Quantile_"+m_accessorName : "is_"+m_accessorName; HelperFunctions::connectBranch (jetName, tree, branch, &m_isTag); if(m_mc) { HelperFunctions::connectBranch >(jetName, tree,"SF_"+m_accessorName, &m_sf); if(m_isContinuous) HelperFunctions::connectBranch>(jetName, tree, "InefficiencySF_"+m_accessorName, &m_ineffSf); } } void setBranch(TTree *tree, const std::string& jetName) { std::string id = m_isContinuous ? "_Quantile_" : "_is_"; tree->Branch((jetName+id+m_accessorName).c_str(), &m_isTag); if ( m_mc ) { tree->Branch((jetName+"_SF_"+m_accessorName).c_str() , &m_sf); if(m_isContinuous) tree->Branch((jetName+"_InefficiencySF_"+m_accessorName).c_str(), &m_ineffSf); } } void clear() { m_isTag->clear(); m_sf->clear(); if(m_isContinuous) m_ineffSf->clear(); } void Fill( const xAOD::Jet* jet ) { static const std::vector junk(1,-999); if( m_isContinuous ) { SG::AuxElement::ConstAccessor< int > quantile("BTag_Quantile_"+m_accessorName); m_isTag->push_back( quantile.isAvailable(*jet) ? quantile(*jet) : -1 ); if(m_mc) { SG::AuxElement::ConstAccessor< std::vector > sf( "BTag_SF_" +m_accessorName); SG::AuxElement::ConstAccessor< std::vector > ineffSf("BTag_InefficiencySF_"+m_accessorName); m_sf ->push_back( sf.isAvailable( *jet ) ? sf( *jet ) : junk); m_ineffSf->push_back( ineffSf.isAvailable( *jet ) ? ineffSf( *jet ) : junk); } } else { SG::AuxElement::ConstAccessor< char > isTag("BTag_"+m_accessorName); m_isTag->push_back( isTag.isAvailable(*jet) ? isTag(*jet) : -1 ); if(m_mc) { SG::AuxElement::ConstAccessor< std::vector > sf("BTag_SF_"+m_accessorName); m_sf->push_back( sf.isAvailable( *jet ) ? sf( *jet ) : junk); } } } // Fill }; std::vector m_btags; // JVC std::vector *m_JetVertexCharge_discriminant; // area std::vector *m_GhostArea; std::vector *m_ActiveArea; std::vector *m_VoronoiArea; std::vector *m_ActiveArea4vec_pt; std::vector *m_ActiveArea4vec_eta; std::vector *m_ActiveArea4vec_phi; std::vector *m_ActiveArea4vec_m; // truth std::vector *m_ConeTruthLabelID; std::vector *m_TruthCount; std::vector *m_TruthLabelDeltaR_B; std::vector *m_TruthLabelDeltaR_C; std::vector *m_TruthLabelDeltaR_T; std::vector *m_PartonTruthLabelID; std::vector *m_GhostTruthAssociationFraction; std::vector *m_truth_E; std::vector *m_truth_pt; std::vector *m_truth_phi; std::vector *m_truth_eta; // truth detail std::vector *m_GhostBHadronsFinalCount; std::vector *m_GhostBHadronsInitialCount; std::vector *m_GhostBQuarksFinalCount; std::vector *m_GhostBHadronsFinalPt; std::vector *m_GhostBHadronsInitialPt; std::vector *m_GhostBQuarksFinalPt; std::vector *m_GhostCHadronsFinalCount; std::vector *m_GhostCHadronsInitialCount; std::vector *m_GhostCQuarksFinalCount; std::vector *m_GhostCHadronsFinalPt; std::vector *m_GhostCHadronsInitialPt; std::vector *m_GhostCQuarksFinalPt; std::vector *m_GhostTausFinalCount; std::vector *m_GhostTausFinalPt; std::vector *m_truth_pdgId; std::vector *m_truth_partonPt; std::vector *m_truth_partonDR; // charge std::vector *m_charge; // passSel std::vector *m_passSel; // passOR std::vector *m_passOR; }; } #endif // xAODAnaHelpers_JetContainer_H