ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/IPHCalignment2/RecoTracker/TransientTrackingRecHit/plugins/TkTransientTrackingRecHitBuilderESProducer.cc
Revision: 1.1
Committed: Fri Nov 25 17:05:34 2011 UTC (13 years, 5 months ago) by econte
Content type: text/plain
Branch: MAIN
CVS Tags: TBD2011, TBD_2011, HEAD
Error occurred while calculating annotation data.
Log Message:
new IPHC alignment

File Contents

# Content
1 #include "RecoTracker/TransientTrackingRecHit/plugins/TkTransientTrackingRecHitBuilderESProducer.h"
2 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
3 #include "MagneticField/Engine/interface/MagneticField.h"
4 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
5
6
7 #include "FWCore/Framework/interface/EventSetup.h"
8 #include "FWCore/Framework/interface/ESHandle.h"
9 #include "FWCore/Framework/interface/ModuleFactory.h"
10 #include "FWCore/Framework/interface/ESProducer.h"
11
12 #include <string>
13 #include <memory>
14
15 #include "FWCore/MessageLogger/interface/MessageLogger.h"
16
17 using namespace edm;
18
19 TkTransientTrackingRecHitBuilderESProducer::TkTransientTrackingRecHitBuilderESProducer(const edm::ParameterSet & p)
20 {
21 std::string myname = p.getParameter<std::string>("ComponentName");
22 pset_ = p;
23 setWhatProduced(this,myname);
24 }
25
26 TkTransientTrackingRecHitBuilderESProducer::~TkTransientTrackingRecHitBuilderESProducer() {}
27
28 boost::shared_ptr<TransientTrackingRecHitBuilder>
29 TkTransientTrackingRecHitBuilderESProducer::produce(const TransientRecHitRecord & iRecord){
30 // if (_propagator){
31 // delete _propagator;
32 // _propagator = 0;
33 // }
34
35 std::string sname = pset_.getParameter<std::string>("StripCPE");
36 std::string pname = pset_.getParameter<std::string>("PixelCPE");
37 std::string mname = pset_.getParameter<std::string>("Matcher");
38
39 edm::ESHandle<StripClusterParameterEstimator> se;
40 edm::ESHandle<PixelClusterParameterEstimator> pe;
41 edm::ESHandle<SiStripRecHitMatcher> me;
42 const StripClusterParameterEstimator * sp ;
43 const PixelClusterParameterEstimator * pp ;
44 const SiStripRecHitMatcher * mp ;
45
46 if (sname == "Fake") {
47 sp = 0;
48 }else{
49 iRecord.getRecord<TkStripCPERecord>().get( sname, se );
50 sp = se.product();
51 }
52
53 if (pname == "Fake") {
54 pp = 0;
55 }else{
56 iRecord.getRecord<TkPixelCPERecord>().get( pname, pe );
57 pp = pe.product();
58 }
59
60 if (mname == "Fake") {
61 mp = 0;
62 }else{
63 iRecord.getRecord<TkStripCPERecord>().get( mname, me );
64 mp = me.product();
65 }
66
67 bool computeCoarseLocalPositionFromDisk = pset_.getParameter<bool>("ComputeCoarseLocalPositionFromDisk");
68 if (computeCoarseLocalPositionFromDisk)
69 edm::LogWarning("TkTransientTrackingRecHitBuilderESProducer")<<" The tracking rec hit positions and errors are not a persistent in data formats.\n"
70 <<" They are not available from disk.\n"
71 <<" However, TkTransientTrackingRecHitBuilderESProducer::ComputeCoarseLocalPositionFromDisk=True \n"
72 <<" will make the coarse estimation of this position/error available without track refit.\n"
73 <<" Position/error obtained from rechit with already defined position/error are not recomputed.\n"
74 <<" Position/error obtained from track refit are precise.";
75
76 edm::ESHandle<TrackerGeometry> pDD;
77 iRecord.getRecord<TrackerDigiGeometryRecord>().get( pDD );
78
79 _builder = boost::shared_ptr<TransientTrackingRecHitBuilder>(new TkTransientTrackingRecHitBuilder(pDD.product(), pp, sp, mp, computeCoarseLocalPositionFromDisk));
80 return _builder;
81 }
82
83