CMS 3D CMS Logo

SiStripRandomLorentzAngle Class Reference

#include <CalibTracker/SiStripLorentzAngle/interface/SiStripRandomLorentzAngle.h>

Inheritance diagram for SiStripRandomLorentzAngle:

ConditionDBWriter< SiStripLorentzAngle > edm::EDAnalyzer

List of all members.

Public Member Functions

void algoBeginJob (const edm::EventSetup &)
SiStripLorentzAnglegetNewObject ()
 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_


Detailed Description

Definition at line 19 of file SiStripRandomLorentzAngle.h.


Constructor & Destructor Documentation

SiStripRandomLorentzAngle::SiStripRandomLorentzAngle ( const edm::ParameterSet conf  )  [explicit]

Definition at line 14 of file SiStripRandomLorentzAngle.cc.

SiStripRandomLorentzAngle::~SiStripRandomLorentzAngle (  )  [virtual]

Definition at line 55 of file SiStripRandomLorentzAngle.cc.

00055                                                       {  
00056 }  


Member Function Documentation

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 }


Member Data Documentation

double SiStripRandomLorentzAngle::appliedVoltage_ [private]

Definition at line 34 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().

double SiStripRandomLorentzAngle::chargeMobility_ [private]

Definition at line 35 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().

edm::ParameterSet SiStripRandomLorentzAngle::conf_ [private]

Definition at line 33 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().

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]

Definition at line 39 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().

double SiStripRandomLorentzAngle::holeSaturationVelocity_ [private]

Definition at line 40 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().

double SiStripRandomLorentzAngle::rhall_ [private]

Definition at line 38 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().

double SiStripRandomLorentzAngle::temperature_ [private]

Definition at line 36 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().

double SiStripRandomLorentzAngle::temperatureerror_ [private]

Definition at line 37 of file SiStripRandomLorentzAngle.h.

Referenced by algoBeginJob().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:32:31 2009 for CMSSW by  doxygen 1.5.4