Atlfast::JetSmearer Class Reference

Provides parameterised jet smearing. More...

#include <JetSmearer.h>

Inheritance diagram for Atlfast::JetSmearer:

Inheritance graph
[legend]
Collaboration diagram for Atlfast::JetSmearer:

Collaboration graph
[legend]
List of all members.

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.

Detailed Description

Provides parameterised jet smearing.

Jet Smearer honours the ISmearer interface and uses implementation of the DefaultSmearer class.

Definition at line 38 of file JetSmearer.h.


Constructor & Destructor Documentation

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]

Destructor as in DefaultSmearer

Definition at line 60 of file JetSmearer.h.

00060 { }


Member Function Documentation

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.

00094                                                                              {
00095     return 0;
00096   }

int Atlfast::JetSmearer::setSmearParamSchema ( const int  smearSchema  )  [virtual]

Sets the smearing schema

Reimplemented from Atlfast::DefaultSmearer.

Definition at line 98 of file JetSmearer.cxx.

00098                                                                 {
00099     return 0;
00100   }

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;}


Member Data Documentation

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]

R-cone size in barrel region: for pileup.

Definition at line 80 of file JetSmearer.h.

double Atlfast::JetSmearer::m_rconef [private]

R-cone size in forward region: for pileup.

Definition at line 81 of file JetSmearer.h.

double Atlfast::JetSmearer::m_BarrelForwardEta [private]

Eta boundary between barrel and forward region.

Definition at line 82 of file JetSmearer.h.


The documentation for this class was generated from the following files:
Generated on Mon Sep 24 14:19:40 2007 for AtlfastAlgs by  doxygen 1.5.1