#include <JetSmearer.h>
Inheritance diagram for Atlfast::JetSmearer:
Public Member Functions | |
JetSmearer (const int aseed, const int lumi, const double rconeb, const double rconef, const double barrelForwardEta) | |
virtual | ~JetSmearer () |
virtual HepLorentzVector | smear (const HepMC::GenParticle &) |
virtual HepLorentzVector | smear (const HepLorentzVector &avec) |
virtual int | setSmearParameters (const std::vector< double > &smearValues) |
virtual int | setSmearParamSchema (const int smearSchema) |
Private Member Functions | |
RandGauss * | randGauss () |
RandFlat * | randFlat () |
Private Attributes | |
int | m_lumi |
double | m_rconeb |
R-cone size in barrel region: for pileup. | |
double | m_rconef |
R-cone size in forward region: for pileup. | |
double | m_BarrelForwardEta |
Eta boundary between barrel and forward region. |
Jet Smearer honours the ISmearer interface and uses implementation of the DefaultSmearer class.
Definition at line 38 of file JetSmearer.h.
Atlfast::JetSmearer::JetSmearer | ( | const int | aseed, | |
const int | lumi, | |||
const double | rconeb, | |||
const double | rconef, | |||
const double | barrelForwardEta | |||
) | [inline] |
Constructor as in DefaultSmearer
Definition at line 46 of file JetSmearer.h.
00050 : 00051 ISmearer(), 00052 DefaultSmearer(aseed), 00053 m_lumi(lumi), 00054 m_rconeb(rconeb), 00055 m_rconef(rconef), 00056 m_BarrelForwardEta(barrelForwardEta) 00057 { }
virtual Atlfast::JetSmearer::~JetSmearer | ( | ) | [inline, virtual] |
HepLorentzVector Atlfast::JetSmearer::smear | ( | const HepMC::GenParticle & | ) | [virtual] |
Smear method for HepMC::GenParticle
Reimplemented from Atlfast::DefaultSmearer.
Definition at line 25 of file JetSmearer.cxx.
00025 { 00026 return smear(particle.momentum()); 00027 }
HepLorentzVector Atlfast::JetSmearer::smear | ( | const HepLorentzVector & | avec | ) | [virtual] |
Smear method for HepLorentzVector
Reimplemented from Atlfast::DefaultSmearer.
Definition at line 29 of file JetSmearer.cxx.
00029 { 00030 // do the smearing, copied verbatim (except for ROOT dependencies) 00031 // from Jetmaker codein Atlfast++ 00032 // 00033 // This code has not otherwise been altered which is why it is all very 00034 // procedural 00035 // 00036 00037 //........................................................ 00038 //.....smear clusters energy 00039 //........................................................ 00040 float sigma=0.; 00041 if ( vec.e() == 0 ) return vec; 00042 HepLorentzVector smearedVec(vec); 00043 00044 00045 // parametrizes smearing for hadronic energy deposition 00046 // parametrization from L. Poggioli 00047 // pile-up added as in HADCALO 00048 00049 float epileup = 0; 00050 float aa, bb, cc, dd; 00051 float abseta = fabs(vec.pseudoRapidity()); 00052 float rcone; 00053 //make sure momentum, energy is in GeV 00054 float sqrtene = sqrt(vec.e()/GeV); 00055 float pt = vec.perp()/GeV; 00056 if (fabs(vec.pseudoRapidity()) <= m_BarrelForwardEta) {rcone=m_rconeb;}else{rcone=m_rconef;} 00057 if(rcone <= 0.4) epileup = 0.4; 00058 if(rcone == 0.4) epileup = 7.5; 00059 if(rcone > 0.4 && rcone <= 0.5) epileup = 12.0; 00060 if(rcone > 0.5 && rcone <= 0.7) epileup = 18.0; 00061 if(rcone > 0.7) epileup = 20.0; 00062 00063 if(m_lumi <= 1) { 00064 while(1) { 00065 aa=randGauss()->fire(); 00066 bb=randGauss()->fire(); 00067 if(abseta < m_BarrelForwardEta) sigma = aa*0.5/sqrtene + bb*0.03; 00068 else sigma = aa*1.0/sqrtene + bb*0.07; 00069 if(1.+sigma > .0) break; 00070 } 00071 } else if(m_lumi == 2) { 00072 while(1) { 00073 aa=randGauss()->fire(); 00074 bb=randGauss()->fire(); 00075 cc=randGauss()->fire(); 00076 dd=randGauss()->fire(); 00077 if(abseta < m_BarrelForwardEta) sigma = aa*0.5/sqrtene + bb*0.03 + cc*epileup/pt; 00078 else sigma = aa*1.0/sqrtene + bb*0.07 + cc*epileup/pt; 00079 if(1.+sigma > .0) break; 00080 } 00081 00082 } 00083 smearedVec.setPx(vec.px()*(1.0+sigma)); 00084 smearedVec.setPy(vec.py()*(1.0+sigma)); 00085 smearedVec.setPz(vec.pz()*(1.0+sigma)); 00086 smearedVec.setE(vec.e()*(1.0+sigma)); 00087 00088 00089 return smearedVec; 00090 00091 }
int Atlfast::JetSmearer::setSmearParameters | ( | const std::vector< double > & | smearValues | ) | [virtual] |
Sets the smearing parameters
Reimplemented from Atlfast::DefaultSmearer.
Definition at line 94 of file JetSmearer.cxx.
int Atlfast::JetSmearer::setSmearParamSchema | ( | const int | smearSchema | ) | [virtual] |
Sets the smearing schema
Reimplemented from Atlfast::DefaultSmearer.
Definition at line 98 of file JetSmearer.cxx.
RandGauss* Atlfast::DefaultSmearer::randGauss | ( | ) | [inline, inherited] |
Hook for subclasses etc. to get their hands on a randGauss object
Definition at line 65 of file DefaultSmearer.h.
00065 { return m_randGauss;}
RandFlat* Atlfast::DefaultSmearer::randFlat | ( | ) | [inline, inherited] |
Hook for subclasses etc. to get their hands on a randFlat object
Definition at line 71 of file DefaultSmearer.h.
00071 { return m_randFlat;}
int Atlfast::JetSmearer::m_lumi [private] |
luminosity option. Currently using an int with 1= low lumi, 2 = high lumi. This is not very pleasant, but leave for now
Definition at line 79 of file JetSmearer.h.
double Atlfast::JetSmearer::m_rconeb [private] |
double Atlfast::JetSmearer::m_rconef [private] |
double Atlfast::JetSmearer::m_BarrelForwardEta [private] |