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
Log Message:
new IPHC alignment

File Contents

# User Rev Content
1 econte 1.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