CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoLocalTracker/SiStripRecHitConverter/plugins/StripCPEESProducer.cc

Go to the documentation of this file.
00001 #include "RecoLocalTracker/SiStripRecHitConverter/plugins/StripCPEESProducer.h"
00002 #include "RecoLocalTracker/SiStripRecHitConverter/interface/StripCPE.h"
00003 #include "RecoLocalTracker/SiStripRecHitConverter/interface/StripCPEfromTrackAngle.h"
00004 #include "RecoLocalTracker/SiStripRecHitConverter/interface/StripCPEfromTemplate.h"
00005 #include "RecoLocalTracker/SiStripRecHitConverter/interface/StripCPEgeometric.h"
00006 #include "CondFormats/SiStripObjects/interface/SiStripBackPlaneCorrection.h"
00007 #include "CondFormats/SiStripObjects/interface/SiStripConfObject.h"
00008 #include "CondFormats/SiStripObjects/interface/SiStripLatency.h"
00009 #include "CondFormats/SiStripObjects/interface/SiStripNoises.h"
00010 #include "CondFormats/SiStripObjects/interface/SiStripApvGain.h"
00011 #include "CondFormats/SiStripObjects/interface/SiStripBadStrip.h"
00012 #include "FWCore/Framework/interface/ESHandle.h"
00013 
00014 StripCPEESProducer::StripCPEESProducer(const edm::ParameterSet & p) 
00015 {
00016   std::string name = p.getParameter<std::string>("ComponentName");
00017   std::string type=name;
00018   if (!p.exists("ComponentType"))
00019     edm::LogWarning("StripCPEESProducer")<<" the CPE producer should contain a ComponentType, probably identical to ComponentName in the first step of migration. Falling back to:"<<type;
00020   else
00021     type=p.getParameter<std::string>("ComponentType");
00022 
00023   enumMap[std::string("SimpleStripCPE")]=SIMPLE;
00024   enumMap[std::string("StripCPEfromTrackAngle")]=TRACKANGLE;
00025   enumMap[std::string("StripCPEgeometric")]=GEOMETRIC;
00026   enumMap[std::string("StripCPEfromTemplate")]=TEMPLATE;
00027   if(enumMap.find(type)==enumMap.end()) 
00028     throw cms::Exception("Unknown StripCPE type") << type;
00029 
00030   cpeNum = enumMap[type];
00031   pset = p;
00032   setWhatProduced(this,name);
00033 }
00034 
00035 boost::shared_ptr<StripClusterParameterEstimator> StripCPEESProducer::
00036 produce(const TkStripCPERecord & iRecord) 
00037 { 
00038   edm::ESHandle<TrackerGeometry> pDD;  iRecord.getRecord<TrackerDigiGeometryRecord>().get( pDD );
00039   edm::ESHandle<MagneticField> magfield;  iRecord.getRecord<IdealMagneticFieldRecord>().get(magfield );
00040   edm::ESHandle<SiStripLorentzAngle> lorentzAngle;   iRecord.getRecord<SiStripLorentzAngleDepRcd>().get(lorentzAngle);
00041   edm::ESHandle<SiStripBackPlaneCorrection> backPlaneCorrection; iRecord.getRecord<SiStripBackPlaneCorrectionDepRcd>().get(backPlaneCorrection);
00042   edm::ESHandle<SiStripConfObject> confObj;  iRecord.getRecord<SiStripConfObjectRcd>().get(confObj);
00043   edm::ESHandle<SiStripLatency> latency;  iRecord.getRecord<SiStripLatencyRcd>().get(latency);
00044   edm::ESHandle<SiStripNoises> noise;  iRecord.getRecord<SiStripNoisesRcd>().get(noise);
00045   edm::ESHandle<SiStripApvGain> gain;  iRecord.getRecord<SiStripApvGainRcd>().get(gain);
00046   edm::ESHandle<SiStripBadStrip> bad;  iRecord.getRecord<SiStripBadChannelRcd>().get(bad);
00047  
00048   
00049   switch(cpeNum) {
00050 
00051   case SIMPLE:     
00052     cpe = boost::shared_ptr<StripClusterParameterEstimator>(new StripCPE( pset, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency ));  
00053     break;
00054     
00055   case TRACKANGLE: 
00056     cpe = boost::shared_ptr<StripClusterParameterEstimator>(new StripCPEfromTrackAngle( pset, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency )); 
00057     break;
00058     
00059   case GEOMETRIC:  
00060     cpe = boost::shared_ptr<StripClusterParameterEstimator>(new StripCPEgeometric(pset, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency )); 
00061     break;  
00062 
00063   case TEMPLATE: 
00064     cpe = boost::shared_ptr<StripClusterParameterEstimator>(new StripCPEfromTemplate( pset, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency )); 
00065     break;
00066 
00067 
00068   }
00069 
00070   return cpe;
00071 }