CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_6/src/RecoTauTag/RecoTau/interface/TCTauAlgorithm.h

Go to the documentation of this file.
00001 #ifndef TCTauAlgorithm_H
00002 #define TCTauAlgorithm_H
00003 
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 
00016 #include "TLorentzVector.h"
00017 #include "DataFormats/TauReco/interface/CaloTau.h"
00018 #include "DataFormats/JetReco/interface/CaloJet.h"
00019 //#include "DataFormats/JetReco/interface/Jet.h"
00020 //#include "DataFormats/BTauReco/interface/IsolatedTauTagInfo.h"
00021 
00022 #include "FWCore/Framework/interface/Event.h"
00023 
00024 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
00025 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
00026 
00027 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00028 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
00029 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00030 
00031 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00032 #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
00033 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00034 #include "DataFormats/EcalDetId/interface/EEDetId.h"
00035 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
00036 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
00037 
00038 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00039 
00040 #include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
00041 
00042 
00043 #include "Math/VectorUtil.h"
00044 
00045 class TCTauAlgorithm {
00046     public:
00047         enum  {TCAlgoUndetermined,
00048                TCAlgoMomentum,
00049                TCAlgoTrackProblem,
00050                TCAlgoMomentumECAL,
00051                TCAlgoCaloJet,
00052                TCAlgoHadronicJet};
00053 
00054     public:
00055         TCTauAlgorithm();
00056         TCTauAlgorithm(const edm::ParameterSet&);
00057         ~TCTauAlgorithm();
00058 
00059         math::XYZTLorentzVector recalculateEnergy(const reco::CaloTau&);
00060         math::XYZTLorentzVector recalculateEnergy(const reco::CaloJet&,const reco::TrackRef&,const reco::TrackRefVector&);
00061 
00062         void inputConfig(const edm::ParameterSet& iConfig);
00063         void eventSetup(const edm::Event&,const edm::EventSetup&);
00064 
00065         double efficiency();
00066         int    allTauCandidates();
00067         int    statistics();
00068         int    algoComponent();
00069 
00070     private:
00071 
00072         const edm::Event *event;
00073         const edm::EventSetup *setup;
00074         TrackAssociatorParameters trackAssociatorParameters;
00075         TrackDetectorAssociator* trackAssociator;
00076 
00077 
00078         void init();
00079 
00080         math::XYZVector                 trackEcalHitPoint(const reco::TransientTrack&,const reco::CaloJet&);
00081         math::XYZVector           trackEcalHitPoint(const reco::Track&);
00082         std::pair<math::XYZVector,math::XYZVector> getClusterEnergy(const reco::CaloJet&,math::XYZVector&,double);
00083         math::XYZVector                 getCellMomentum(const CaloCellGeometry*,double&);
00084 
00085 
00086         int all,
00087             passed;
00088 
00089         int algoComponentUsed;
00090 
00091         int prongs;
00092 
00093         bool dropCaloJets;
00094         bool dropRejected;
00095 
00096         const TransientTrackBuilder* transientTrackBuilder;
00097 
00098         double signalCone;
00099         double ecalCone;
00100 
00101         double  etCaloOverTrackMin,
00102                 etCaloOverTrackMax,
00103                 etHcalOverTrackMin,
00104                 etHcalOverTrackMax;
00105 
00106         edm::InputTag EcalRecHitsEB_input;
00107         edm::InputTag EcalRecHitsEE_input;
00108         edm::InputTag HBHERecHits_input;
00109         edm::InputTag HORecHits_input;
00110         edm::InputTag HFRecHits_input;
00111 
00112         const CaloSubdetectorGeometry* EB;
00113         const CaloSubdetectorGeometry* EE;
00114         const CaloSubdetectorGeometry* HB;
00115         const CaloSubdetectorGeometry* HE;
00116         const CaloSubdetectorGeometry* HO;
00117         const CaloSubdetectorGeometry* HF;
00118 
00119         edm::Handle<EBRecHitCollection>   EBRecHits;
00120         edm::Handle<EERecHitCollection>   EERecHits;
00121 
00122         edm::Handle<HBHERecHitCollection> HBHERecHits;
00123         edm::Handle<HORecHitCollection>   HORecHits;
00124         edm::Handle<HFRecHitCollection>   HFRecHits;
00125 };
00126 #endif
00127 
00128