Go to the documentation of this file.00001
00002 #include <memory>
00003 #include <vector>
00004 #include <map>
00005
00006
00007 #include "FWCore/Framework/interface/Frameworkfwd.h"
00008 #include "FWCore/Framework/interface/EDProducer.h"
00009 #include "FWCore/Framework/interface/Event.h"
00010 #include "FWCore/Framework/interface/MakerMacros.h"
00011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00012 #include "FWCore/Framework/interface/ESHandle.h"
00013
00014 #include "DataFormats/Common/interface/Handle.h"
00015 #include "DataFormats/DetId/interface/DetId.h"
00016 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00017
00018 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00019 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00020
00021 #include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
00022 #include "TrackingTools/TrackAssociator/interface/TrackAssociatorParameters.h"
00023 #include "TrackingTools/TrackAssociator/interface/DetIdAssociator.h"
00024 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h"
00025
00026 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00027
00028 #include "AnalysisDataFormats/SUSYBSMObjects/interface/HSCParticle.h"
00029 #include "AnalysisDataFormats/SUSYBSMObjects/interface/HSCPCaloInfo.h"
00030
00031 using namespace susybsm;
00032
00033 class BetaCalculatorECAL {
00034
00035 public:
00036 BetaCalculatorECAL(const edm::ParameterSet& iConfig);
00037 void addInfoToCandidate(HSCParticle& candidate, edm::Handle<reco::TrackCollection>& tracks, edm::Event& iEvent, const edm::EventSetup& iSetup, HSCPCaloInfo& caloInfo);
00038
00039 private:
00040 int getDetailedTrackLengthInXtals(std::map<int,GlobalPoint>& trackExitPositionMap,
00041 std::map<int,float>& trackCrossedXtalMap,
00042 double& totalLengthCurved,
00043 GlobalPoint& internalPointCurved,
00044 GlobalPoint& externalPointCurved,
00045 const CaloGeometry* theGeometry,
00046 const CaloTopology * theTopology,
00047 const std::vector<SteppingHelixStateInfo>& neckLace);
00048 std::vector<SteppingHelixStateInfo> calcEcalDeposit(const FreeTrajectoryState* tkInnerState,
00049 const DetIdAssociator& associator);
00050 void addStepToXtal(std::map<int,GlobalPoint>& trackExitPositionMap,
00051 std::map<int,float>& trackCrossedXtalMap,
00052 DetId aDetId,
00053 float step,
00054 GlobalPoint point,
00055 const CaloSubdetectorGeometry* theSubdetGeometry);
00056
00057
00058 TrackDetectorAssociator trackAssociator_;
00059 TrackAssociatorParameters parameters_;
00060 edm::InputTag EBRecHitCollection_;
00061 edm::InputTag EERecHitCollection_;
00062
00063 edm::ESHandle<DetIdAssociator> ecalDetIdAssociator_;
00064 edm::ESHandle<MagneticField> bField_;
00065 edm::ESHandle<CaloGeometry> theCaloGeometry_;
00066
00067 };
00068
00069