CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/TrackingTools/TrackAssociator/interface/TrackDetMatchInfo.h

Go to the documentation of this file.
00001 #ifndef TrackAssociator_TrackDetMatchInfo_h
00002 #define TrackAssociator_TrackDetMatchInfo_h
00003 
00004 #include "DataFormats/CaloTowers/interface/CaloTower.h"
00005 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
00006 #include "DataFormats/HcalRecHit/interface/HBHERecHit.h"
00007 #include "DataFormats/HcalRecHit/interface/HORecHit.h"
00008 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00009 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
00010 #include "TrackingTools/TrackAssociator/interface/TAMuonChamberMatch.h"
00011 #include "FWCore/Framework/interface/ESHandle.h"
00012 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00013 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h"
00014 class TrackDetMatchInfo {
00015  public:
00016    enum EnergyType { EcalRecHits, HcalRecHits, HORecHits, TowerTotal, TowerEcal, TowerHcal, TowerHO };
00017    
00018    TrackDetMatchInfo();
00019    
00021    double crossedEnergy( EnergyType );
00022    
00025    double coneEnergy( double dR, EnergyType );
00026    
00028    double nXnEnergy(const DetId&, EnergyType, int gridSize = 1);
00029    
00031    double nXnEnergy(EnergyType, int gridSize = 1);
00032 
00034    DetId findMaxDeposition( EnergyType );
00035    DetId findMaxDeposition( EnergyType, int gridSize );
00036    DetId findMaxDeposition( const DetId&, EnergyType, int gridSize );
00037    
00039    math::XYZPoint trkGlobPosAtEcal;
00040    math::XYZPoint trkGlobPosAtHcal;
00041    math::XYZPoint trkGlobPosAtHO;
00042    
00043   GlobalVector trkMomAtEcal;
00044   GlobalVector trkMomAtHcal;
00045   GlobalVector trkMomAtHO;
00046    
00047    bool isGoodEcal;
00048    bool isGoodHcal;
00049    bool isGoodCalo;
00050    bool isGoodHO;
00051    bool isGoodMuon;
00052    
00054    std::vector<const EcalRecHit*> ecalRecHits;
00055    std::vector<const HBHERecHit*> hcalRecHits;
00056    std::vector<const HORecHit*>   hoRecHits;
00057    std::vector<const CaloTower*>  towers;
00058 
00060    std::vector<const EcalRecHit*> crossedEcalRecHits;
00061    std::vector<const HBHERecHit*> crossedHcalRecHits;
00062    std::vector<const HORecHit*>   crossedHORecHits;
00063    std::vector<const CaloTower*>  crossedTowers;
00064 
00067    std::vector<DetId>      crossedEcalIds;
00068    std::vector<DetId>      crossedHcalIds;
00069    std::vector<DetId>      crossedHOIds;
00070    std::vector<DetId>      crossedTowerIds;
00071    std::vector<DetId>      crossedPreshowerIds;
00072    
00073    std::vector<TAMuonChamberMatch> chambers;
00074 
00076    FreeTrajectoryState stateAtIP;
00077    
00079    const SimTrack* simTrack;
00080    double ecalTrueEnergy;
00081    double hcalTrueEnergy;
00082    double hcalTrueEnergyCorrected;
00083    
00086    reco::TrackRef trackRef_;
00087    SimTrackRef simTrackRef_;
00088    
00089    double ecalCrossedEnergy();
00090    double ecalConeEnergy();
00091    double hcalCrossedEnergy();
00092    double hcalConeEnergy();
00093    double hoCrossedEnergy();
00094    double hoConeEnergy();
00095 
00096    double ecalTowerEnergy() { return crossedEnergy(TowerEcal); }
00097    double ecalTowerConeEnergy() { return coneEnergy(999,TowerEcal); }
00098    double hcalTowerEnergy() { return crossedEnergy(TowerHcal); }
00099    double hcalTowerConeEnergy() { return coneEnergy(999, TowerHcal); }
00100    double hoTowerEnergy() { return crossedEnergy(TowerHO); }
00101    double hoTowerConeEnergy() { return coneEnergy(999, TowerHO); }
00102 
00103    double ecalEnergy() { return ecalCrossedEnergy(); }
00104    double hcalEnergy() { return hcalCrossedEnergy(); }
00105    double hoEnergy() { return hoCrossedEnergy(); }
00106    
00107    int numberOfSegments() const;
00108    int numberOfSegmentsInStation(int station) const;
00109    int numberOfSegmentsInStation(int station, int detector) const;
00110    int numberOfSegmentsInDetector(int detector) const;
00111    
00112    void setCaloGeometry( edm::ESHandle<CaloGeometry> geometry ) { caloGeometry = geometry; }
00113    GlobalPoint getPosition( const DetId& );
00114    std::string dumpGeometry( const DetId& );
00115  private:
00116    bool insideCone(const DetId&, const double);
00117    edm::ESHandle<CaloGeometry> caloGeometry;
00118 };
00119 #endif