CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoEgamma/EgammaPhotonProducers/interface/ConvertedPhotonProducer.h

Go to the documentation of this file.
00001 #ifndef RecoEgamma_EgammaPhotonProducers_ConvertedPhotonProducer_h
00002 #define RecoEgamma_EgammaPhotonProducers_ConvertedPhotonProducer_h
00003 
00013 #include "FWCore/Framework/interface/EDProducer.h"
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 #include "FWCore/Framework/interface/Event.h"
00016 #include "FWCore/Framework/interface/EventSetup.h"
00017 #include "FWCore/Framework/interface/ESHandle.h"
00018 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00019 #include "MagneticField/Engine/interface/MagneticField.h"
00020 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
00021 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00022 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h"
00023 #include "TrackingTools/DetLayers/interface/NavigationSetter.h"
00024 #include "TrackingTools/DetLayers/interface/NavigationSchool.h"
00025 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
00026 #include "RecoTracker/TkNavigation/interface/SimpleNavigationSchool.h"
00027 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
00028 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h"
00029 #include "DataFormats/Common/interface/View.h"
00030 #include "RecoEgamma/EgammaTools/interface/ConversionLikelihoodCalculator.h"
00031 #include "RecoCaloTools/MetaCollections/interface/CaloRecHitMetaCollections.h"
00032 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00033 
00034 class ConversionTrackEcalImpactPoint;
00035 class ConversionTrackPairFinder;
00036 class ConversionVertexFinder;
00037 class ConvertedPhotonProducer : public edm::EDProducer {
00038 
00039  public:
00040 
00041   ConvertedPhotonProducer (const edm::ParameterSet& ps);
00042   ~ConvertedPhotonProducer();
00043 
00044   virtual void beginRun (edm::Run& r, edm::EventSetup const & es);
00045   virtual void endRun (edm::Run& r, edm::EventSetup const & es);
00046   virtual void produce(edm::Event& evt, const edm::EventSetup& es);
00047   virtual void endJob();
00048 
00049 
00050  private:
00051   
00052 
00053 
00054 
00055 
00056 
00057   void buildCollections ( edm::EventSetup const & es,
00058                           const edm::Handle<edm::View<reco::CaloCluster> > & scHandle,
00059                           const edm::Handle<edm::View<reco::CaloCluster> > & bcHandle,
00060                           const edm::Handle<CaloTowerCollection> & hcalTowersHandle,
00061                           const edm::Handle<reco::TrackCollection>  & trkHandle,
00062                           std::map<std::vector<reco::TransientTrack>, reco::CaloClusterPtr>& allPairs,
00063                           reco::ConversionCollection & outputConvPhotonCollection);
00064   void cleanCollections (const edm::Handle<edm::View<reco::CaloCluster> > & scHandle,
00065                          const edm::OrphanHandle<reco::ConversionCollection> & conversionHandle,
00066                          reco::ConversionCollection & outputCollection);
00067                            
00068   std::vector<reco::ConversionRef> solveAmbiguity( const edm::OrphanHandle<reco::ConversionCollection> & conversionHandle, reco::CaloClusterPtr& sc);
00069 
00070   float calculateMinApproachDistance ( const reco::TrackRef& track1, const reco::TrackRef& track2);
00071   void getCircleCenter(const reco::TrackRef& tk, double r, double& x0, double& y0);
00072     
00073   
00074   std::string conversionOITrackProducer_;
00075   std::string conversionIOTrackProducer_;
00076 
00077 
00078   std::string outInTrackSCAssociationCollection_;
00079   std::string inOutTrackSCAssociationCollection_;
00080 
00081 
00082   std::string ConvertedPhotonCollection_;
00083   std::string CleanedConvertedPhotonCollection_;
00084   
00085   edm::InputTag bcBarrelCollection_;
00086   edm::InputTag bcEndcapCollection_;
00087   edm::InputTag scHybridBarrelProducer_;
00088   edm::InputTag scIslandEndcapProducer_;
00089   edm::ParameterSet conf_;
00090   edm::InputTag hcalTowers_;
00091 
00092   edm::ESHandle<CaloGeometry> theCaloGeom_;
00093   edm::ESHandle<MagneticField> theMF_;
00094   edm::ESHandle<TransientTrackBuilder> theTransientTrackBuilder_;
00095 
00096   ConversionTrackPairFinder*      theTrackPairFinder_;
00097   ConversionVertexFinder*         theVertexFinder_;
00098   ConversionTrackEcalImpactPoint* theEcalImpactPositionFinder_;
00099   int nEvt_;
00100   std::string algoName_;
00101 
00102  
00103   double hOverEConeSize_;
00104   double maxHOverE_;
00105   double minSCEt_;
00106   bool  recoverOneTrackCase_;
00107   double dRForConversionRecovery_;
00108   double deltaCotCut_;
00109   double minApproachDisCut_;
00110   int    maxNumOfCandidates_;
00111   bool risolveAmbiguity_;
00112 
00113 
00114   ConversionLikelihoodCalculator* theLikelihoodCalc_;
00115   std::string likelihoodWeights_;
00116 
00117   math::XYZPointF toFConverterP( const math::XYZPoint &val) {
00118     return math::XYZPointF(val.x(),val.y(),val.z());
00119   }
00120   
00121   math::XYZVectorF toFConverterV( const math::XYZVector &val) {
00122     return math::XYZVectorF(val.x(),val.y(),val.z());
00123   }
00124   
00125 
00126 
00127 };
00128 #endif