CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DataFormats/BTauReco/interface/PFCombinedTauTagInfo.h

Go to the documentation of this file.
00001 #ifndef DataFormats_BTauReco_PFCombinedTauTagInfo_h
00002 #define DataFormats_BTauReco_PFCombinedTauTagInfo_h
00003 
00004 /* class PFCombinedTauTagInfo
00005  *  Extended object for the Particle Flow Tau Combination algorithm, 
00006  *  created: Apr 21 2007,
00007  *  revised: Jun 23 2007,
00008  *  author: Ludovic Houchu.
00009  */
00010 
00011 #include <limits>
00012 #include <math.h>
00013 
00014 #include "DataFormats/BTauReco/interface/RefMacros.h"
00015 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00016 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00017 #include "DataFormats/BTauReco/interface/BaseTagInfo.h"
00018 #include "DataFormats/BTauReco/interface/PFIsolatedTauTagInfo.h"
00019 
00020 
00021 
00022 
00023 namespace reco { 
00024   class PFCombinedTauTagInfo : public BaseTagInfo{
00025   public:
00026     PFCombinedTauTagInfo() {
00027       candidate_selectedByPFChargedHadrCands_=false;
00028       electronTagged_=false;
00029       muonTagged_=false;
00030       PFChargedHadrCands_.clear();
00031       selectedPFChargedHadrCands_.clear();
00032       signalPFChargedHadrCands_.clear();
00033       isolPFChargedHadrCands_.clear();
00034       leadPFChargedHadrCandsignedSipt_=NAN;
00035       leadPFChargedHadrCandsignedSip3D_=NAN;
00036       signedSflightpath_=NAN;
00037       PFChargedHadrCandsEtJetEtRatio_=NAN;
00038       PFNeutrHadrCandsE_=NAN;
00039       PFNeutrHadrCandsN_=numeric_limits<int>::quiet_NaN();
00040       PFNeutrHadrCandsRadius_=NAN;
00041       PFGammaCandsE_=NAN;
00042       isolPFGammaCandsE_=NAN;
00043       PFGammaCandsN_=numeric_limits<int>::quiet_NaN();
00044       PFGammaCandsRadius_=NAN;
00045       PFGammaCandsEJetalternatERatio_=NAN;
00046       isolPFGammaCandsEJetalternatERatio_=NAN;
00047       PFGammaCandsERatio_=NAN;
00048       alternatLorentzVect_.SetPx(NAN);
00049       alternatLorentzVect_.SetPy(NAN);
00050       alternatLorentzVect_.SetPz(NAN);
00051       alternatLorentzVect_.SetE(NAN);
00052       ECALEtleadPFChargedHadrCandPtRatio_=NAN;
00053       HCALEtleadPFChargedHadrCandPtRatio_=NAN;
00054     }
00055     virtual ~PFCombinedTauTagInfo() {};
00056     
00057     //the reference to the PFJet;
00058     const PFJetRef& pfjetRef()const{return PFJetRef_;}
00059     void setpfjetRef(const PFJetRef x){PFJetRef_=x;}
00060 
00061     //the reference to the PFIsolatedTauTagInfo;
00062     const PFIsolatedTauTagInfoRef& isolatedtautaginfoRef()const{return PFIsolatedTauTagInfoRef_;}
00063     void setisolatedtautaginfoRef(const PFIsolatedTauTagInfoRef x) {PFIsolatedTauTagInfoRef_=x;}
00064     
00065     //the PF charged hadron candidates contained in the PF Jet;
00066     const PFCandidateRefVector& PFChargedHadrCands()const{return PFChargedHadrCands_;}
00067     void setPFChargedHadrCands(const PFCandidateRefVector& x) {PFChargedHadrCands_=x;}
00068     
00069     //the PF charged hadron candidates considered in the isolation strip and signal cone selections;
00070     const PFCandidateRefVector& selectedPFChargedHadrCands()const{return selectedPFChargedHadrCands_;}
00071     void setselectedPFChargedHadrCands(const PFCandidateRefVector& x) {selectedPFChargedHadrCands_=x;}
00072     
00073     //the PF charged hadron candidates inside signal cone;
00074     const PFCandidateRefVector& signalPFChargedHadrCands()const{return signalPFChargedHadrCands_;}
00075     void setsignalPFChargedHadrCands(const PFCandidateRefVector& x) {signalPFChargedHadrCands_=x;}
00076     
00077     //the PF charged hadron candidates inside isolation band;
00078     const PFCandidateRefVector& isolPFChargedHadrCands()const{return isolPFChargedHadrCands_;}
00079     void setisolPFChargedHadrCands(const PFCandidateRefVector& x) {isolPFChargedHadrCands_=x;}
00080     
00081     virtual PFCombinedTauTagInfo* clone() const{return new PFCombinedTauTagInfo(*this );}
00082     
00083     // float JetTag::discriminator() returns 0.        if candidate did not pass PF charged hadron candidates selection,   
00084     //                                       1.        if candidate passed PF charged hadron candidates selection and did not contain PF gamma candidate(s),   
00085     //                                       0<=  <=1  if candidate passed PF charged hadron candidates selection, contained PF gamma candidate(s) and went through the likelihood ratio mechanism,   
00086     //                                       NaN       the values of the likelihood functions PDFs are 0 (test the result of discriminator() with bool isnan(.));   
00087     //computed with the parameters taken from the RecoTauTag/PFCombinedTauTag/data/ .cfi files
00088     
00089     bool selectedByPFChargedHadrCands()const{return(candidate_selectedByPFChargedHadrCands_);}
00090     void setselectedByPFChargedHadrCands(bool x){candidate_selectedByPFChargedHadrCands_=x;}
00091 
00092    bool electronTagged()const{return(electronTagged_);} // true : passed PF charged hadron candidates sel., contains 1 signal charged hadron candidate, e-identified through (ECALEtleadPFChargedHadrCandPtRatio(),HCALEtleadPFChargedHadrCandPtRatio()) space;
00093    void setelectronTagged(bool x){electronTagged_=x;} 
00094 
00095    bool muonTagged()const{return(muonTagged_);} // true : passed PF charged hadron candidates sel., contains 1 signal charged hadron candidate, mu-identified through (ECALEtleadPFChargedHadrCandPtRatio(),HCALEtleadPFChargedHadrCandPtRatio()) space;
00096    void setmuonTagged(bool x){muonTagged_=x;}
00097 
00098    double leadPFChargedHadrCandsignedSipt()const{return (leadPFChargedHadrCandsignedSipt_);}  // NaN : failure;
00099    void setleadPFChargedHadrCandsignedSipt(double x){leadPFChargedHadrCandsignedSipt_=x;}
00100 
00101    double leadPFChargedHadrCandsignedSip3D()const{return(leadPFChargedHadrCandsignedSip3D_);}  // NaN : failure;
00102    void setleadPFChargedHadrCandsignedSip3D(double x){leadPFChargedHadrCandsignedSip3D_=x;}
00103 
00104    double signedSflightpath()const{return (signedSflightpath_);}  // NaN : failure, did not build a SV.;
00105    void setsignedSflightpath(double x){signedSflightpath_=x;}
00106    
00107    // Et_PFchargedhadrcands/Etjet;
00108    double PFChargedHadrCandsEtJetEtRatio()const{return(PFChargedHadrCandsEtJetEtRatio_);} 
00109    void setPFChargedHadrCandsEtJetEtRatio(double x){PFChargedHadrCandsEtJetEtRatio_=x;}
00110 
00111    // PF neutral hadron candidates E sum;
00112    double PFNeutrHadrCandsE()const{return(PFNeutrHadrCandsE_);} 
00113    void setPFNeutrHadrCandsE(double x){PFNeutrHadrCandsE_=x;}
00114 
00115    int PFNeutrHadrCandsN()const{return(PFNeutrHadrCandsN_);}
00116    void setPFNeutrHadrCandsN(int x){PFNeutrHadrCandsN_=x;}
00117 
00118    //mean DR_PFNeutrHadrcands-lead.PFcand.;
00119    double PFNeutrHadrCandsRadius()const{return(PFNeutrHadrCandsRadius_);} // NaN : PFNeutrHadrCandsN()=0;
00120    void setPFNeutrHadrCandsRadius(double x){PFNeutrHadrCandsRadius_=x;}
00121 
00122    // PF gamma candidates E sum;
00123    double PFGammaCandsE()const{return(PFGammaCandsE_);} 
00124    void setPFGammaCandsE(double x){PFGammaCandsE_=x;}
00125 
00126    // isol. band PF gamma candidates E sum;
00127    double isolPFGammaCandsE()const{return(isolPFGammaCandsE_);} 
00128    void setisolPFGammaCandsE(double x){isolPFGammaCandsE_=x;}
00129 
00130    int PFGammaCandsN()const{return(PFGammaCandsN_);}
00131    void setPFGammaCandsN(int x){PFGammaCandsN_=x;}
00132 
00133    //mean DR_PFgammacands-lead.PFcand.;
00134    double PFGammaCandsRadius()const{return(PFGammaCandsRadius_);} // NaN : PFGammaCandsN()=0;
00135    void setPFGammaCandsRadius(double x){PFGammaCandsRadius_=x;}
00136 
00137    // E_PFgammacands / (E_PFgammacands + E_PFchargedhadrcands);
00138    double PFGammaCandsEJetalternatERatio()const{return(PFGammaCandsEJetalternatERatio_);} 
00139    void setPFGammaCandsEJetalternatERatio(double x){PFGammaCandsEJetalternatERatio_=x;} 
00140 
00141    // E_PFgammacands,isol.band / (E_PFgammacands + E_PFchargedhadrcands);
00142    double isolPFGammaCandsEJetalternatERatio()const{return(isolPFGammaCandsEJetalternatERatio_);} 
00143    void setisolPFGammaCandsEJetalternatERatio(double x){isolPFGammaCandsEJetalternatERatio_=x;}
00144 
00145    // E_PFgammacands,isol.band / E_PFgammacands;
00146    double PFGammaCandsERatio()const{return(PFGammaCandsERatio_);} // NaN : PFGammaCandsN()=0;
00147    void setPFGammaCandsERatio(double x){PFGammaCandsERatio_=x;}
00148 
00149    math::XYZTLorentzVector alternatLorentzVect()const{return(alternatLorentzVect_);} // rec. charged hadr. candidates + rec. gamma candidates combined;   
00150    void setalternatLorentzVect(math::XYZTLorentzVector x){alternatLorentzVect_=x;}
00151 
00152    // EtECAL*/Pt_lead.PFcand.        *using ECAL cell hits inside a DR cone around lead. charged hadr. candidate ECAL impact point direction;
00153    double ECALEtleadPFChargedHadrCandPtRatio()const{return(ECALEtleadPFChargedHadrCandPtRatio_);} // NaN : failure when trying to find the lead. charged hadr. candidate contact on ECAL surface point; 
00154    void setECALEtleadPFChargedHadrCandPtRatio(double x){ECALEtleadPFChargedHadrCandPtRatio_=x;}
00155 
00156    // EtHCAL**/Pt_lead.PFcand.;      **using HCAL tower hits inside a DR cone around lead. charged hadr. candidate ECAL impact point direction; 
00157    double HCALEtleadPFChargedHadrCandPtRatio()const{return(HCALEtleadPFChargedHadrCandPtRatio_);} // NaN : failure when trying to find the lead. charged hadr. candidate contact on ECAL surface point; 
00158    void setHCALEtleadPFChargedHadrCandPtRatio(double x){HCALEtleadPFChargedHadrCandPtRatio_=x;}
00159  private:
00160    PFJetRef PFJetRef_;
00161    PFIsolatedTauTagInfoRef PFIsolatedTauTagInfoRef_;
00162    PFCandidateRefVector PFChargedHadrCands_;
00163    PFCandidateRefVector selectedPFChargedHadrCands_;
00164    PFCandidateRefVector signalPFChargedHadrCands_;
00165    PFCandidateRefVector isolPFChargedHadrCands_;
00166    bool candidate_selectedByPFChargedHadrCands_;
00167    bool electronTagged_;
00168    bool muonTagged_;
00169    double leadPFChargedHadrCandsignedSipt_;
00170    double leadPFChargedHadrCandsignedSip3D_;
00171    double signedSflightpath_;
00172    double PFChargedHadrCandsEtJetEtRatio_;
00173    double PFNeutrHadrCandsE_;
00174    int PFNeutrHadrCandsN_;
00175    double PFNeutrHadrCandsRadius_;
00176    double PFGammaCandsE_;
00177    double isolPFGammaCandsE_;
00178    int PFGammaCandsN_;
00179    double PFGammaCandsRadius_;
00180    double PFGammaCandsEJetalternatERatio_;
00181    double isolPFGammaCandsEJetalternatERatio_;
00182    double PFGammaCandsERatio_;
00183    math::XYZTLorentzVector alternatLorentzVect_;
00184    double ECALEtleadPFChargedHadrCandPtRatio_;
00185    double HCALEtleadPFChargedHadrCandPtRatio_;
00186  };
00187 
00188   DECLARE_EDM_REFS( PFCombinedTauTagInfo )
00189 
00190 }
00191 
00192 #endif // DataFormats_BTauReco_PFCombinedTauTagInfo_h