#include <CalibTracker/SiStripLorentzAngle/interface/SiStripRandomLorentzAngle.h>
Public Member Functions | |
void | algoBeginJob (const edm::EventSetup &) |
SiStripLorentzAngle * | getNewObject () |
SiStripRandomLorentzAngle (const edm::ParameterSet &conf) | |
virtual | ~SiStripRandomLorentzAngle () |
Private Attributes | |
double | appliedVoltage_ |
double | chargeMobility_ |
edm::ParameterSet | conf_ |
std::vector< std::pair < uint32_t, float > > | detid_la |
double | holeBeta_ |
double | holeSaturationVelocity_ |
double | rhall_ |
double | temperature_ |
double | temperatureerror_ |
Definition at line 19 of file SiStripRandomLorentzAngle.h.
SiStripRandomLorentzAngle::SiStripRandomLorentzAngle | ( | const edm::ParameterSet & | conf | ) | [explicit] |
Definition at line 14 of file SiStripRandomLorentzAngle.cc.
00014 : ConditionDBWriter<SiStripLorentzAngle>(conf) , conf_(conf){}
SiStripRandomLorentzAngle::~SiStripRandomLorentzAngle | ( | ) | [virtual] |
void SiStripRandomLorentzAngle::algoBeginJob | ( | const edm::EventSetup & | c | ) | [virtual] |
Reimplemented from ConditionDBWriter< SiStripLorentzAngle >.
Definition at line 17 of file SiStripRandomLorentzAngle.cc.
References appliedVoltage_, DeDxTools::beta(), chargeMobility_, conf_, detid_la, e, lat::endl(), edm::EventSetup::get(), edm::ParameterSet::getParameter(), holeBeta_, holeSaturationVelocity_, it, funct::pow(), rhall_, temperature_, and temperatureerror_.
00017 { 00018 00019 appliedVoltage_ = conf_.getParameter<double>("AppliedVoltage"); 00020 chargeMobility_ = conf_.getParameter<double>("ChargeMobility"); 00021 temperature_ = conf_.getParameter<double>("Temperature"); 00022 temperatureerror_ = conf_.getParameter<double>("TemperatureError"); 00023 rhall_ = conf_.getParameter<double>("HoleRHAllParameter"); 00024 holeBeta_ = conf_.getParameter<double>("HoleBeta"); 00025 holeSaturationVelocity_ = conf_.getParameter<double>("HoleSaturationVelocity"); 00026 00027 00028 edm::ESHandle<TrackerGeometry> pDD; 00029 c.get<TrackerDigiGeometryRecord>().get( pDD ); 00030 edm::LogInfo("SiStripLorentzAngle") <<" There are "<<pDD->detUnits().size() <<" detectors"<<std::endl; 00031 00032 for(TrackerGeometry::DetUnitContainer::const_iterator it = pDD->detUnits().begin(); it != pDD->detUnits().end(); it++){ 00033 00034 if( dynamic_cast<StripGeomDetUnit*>((*it))!=0){ 00035 uint32_t detid=((*it)->geographicalId()).rawId(); 00036 00037 double thickness=(*it)->specificSurface().bounds().thickness(); 00038 float temperaturernd; 00039 if(temperatureerror_>0)temperaturernd=RandGauss::shoot(temperature_,temperatureerror_); 00040 else temperaturernd=temperature_; 00041 float mulow = chargeMobility_*pow((temperaturernd/300.),-2.5); 00042 float vsat = holeSaturationVelocity_*pow((temperaturernd/300.),0.52); 00043 float beta = holeBeta_*pow((temperaturernd/300.),0.17); 00044 float e = appliedVoltage_/thickness; 00045 float mu = ( mulow/(pow(double((1+pow((mulow*e/vsat),beta))),1./beta))); 00046 float hallMobility = 1.E-4*mu*rhall_; 00047 00048 detid_la.push_back( pair<uint32_t,float>(detid,hallMobility) ); 00049 } 00050 } 00051 00052 }
SiStripLorentzAngle * SiStripRandomLorentzAngle::getNewObject | ( | ) | [virtual] |
Implements ConditionDBWriter< SiStripLorentzAngle >.
Definition at line 61 of file SiStripRandomLorentzAngle.cc.
References detid_la, lat::endl(), it, and SiStripLorentzAngle::putLorentzAngle().
00061 { 00062 00063 SiStripLorentzAngle* LorentzAngle = new SiStripLorentzAngle(); 00064 00065 for(std::vector<std::pair<uint32_t, float> >::iterator it = detid_la.begin(); it != detid_la.end(); it++){ 00066 00067 float langle=it->second; 00068 if ( ! LorentzAngle->putLorentzAngle(it->first,langle) ) 00069 edm::LogError("SiStripRandomLorentzAngle")<<"[SiStripRandomLorentzAngle::analyze] detid already exists"<<std::endl; 00070 } 00071 00072 return LorentzAngle; 00073 }
double SiStripRandomLorentzAngle::appliedVoltage_ [private] |
double SiStripRandomLorentzAngle::chargeMobility_ [private] |
std::vector< std::pair<uint32_t, float> > SiStripRandomLorentzAngle::detid_la [private] |
Definition at line 32 of file SiStripRandomLorentzAngle.h.
Referenced by algoBeginJob(), and getNewObject().
double SiStripRandomLorentzAngle::holeBeta_ [private] |
double SiStripRandomLorentzAngle::holeSaturationVelocity_ [private] |
double SiStripRandomLorentzAngle::rhall_ [private] |
double SiStripRandomLorentzAngle::temperature_ [private] |
double SiStripRandomLorentzAngle::temperatureerror_ [private] |