Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

JetSmearer.cxx

Go to the documentation of this file.
00001 // JetSmearer.cxx
00002 //
00003 // Implementation of the Jet Smearer class
00004 //
00005 // Only the smear() method is overridden
00006 //
00007 //
00008 // Authors: H.T. Phillips, P.Clarke, E.Richter-Was, P.Sherwood, R.Steward
00009 //
00010 //
00011 
00012 #include "AtlfastAlgs/JetSmearer.h"
00013 #include "AtlfastAlgs/PhotonSmearer.h"
00014 #include <cmath>
00015 #include <iostream>
00016 
00017 #include "CLHEP/Vector/LorentzVector.h"
00018 #include "CLHEP/Random/JamesRandom.h"
00019 #include "CLHEP/Random/RandGauss.h"
00020 
00021 
00022 namespace Atlfast {
00023 
00024   HepLorentzVector JetSmearer::smear (const HepLorentzVector& vec) {
00025     // do the smearing, copied verbatim (except for ROOT dependencies)
00026     // from Jetmaker codein Atlfast++
00027     //
00028     // This code has not otherwise been altered which is why it is all very
00029     // procedural
00030     //
00031 
00032 //........................................................
00033 //.....smear clusters energy
00034 //........................................................
00035     float sigma=0.;
00036     HepLorentzVector smearedVec(vec);
00037 
00038 
00039 //     parametrizes smearing for hadronic energy deposition
00040 //     parametrization from L. Poggioli
00041 //     pile-up added as in HADCALO
00042 
00043   float epileup = 0;
00044   float aa, bb, cc, dd,pt;
00045   float sqrtene = sqrt(vec.e());
00046   float abseta  = fabs(vec.pseudoRapidity());
00047   float rcone;
00048   pt = vec.perp();
00049   if (fabs(vec.pseudoRapidity()) <= m_BarrelForwardEta) {rcone=m_rconeb;}else{rcone=m_rconef;}
00050   if(rcone <= 0.4)                epileup = 0.4;
00051   if(rcone == 0.4)                epileup = 7.5;
00052   if(rcone > 0.4 && rcone <= 0.5) epileup = 12.0;
00053   if(rcone > 0.5 && rcone <= 0.7) epileup = 18.0;
00054   if(rcone > 0.7)                 epileup = 20.0;
00055 
00056   if(m_lumi <= 1) {
00057      while(1) {
00058         aa=randGauss()->fire();
00059         bb=randGauss()->fire();
00060         if(abseta < m_BarrelForwardEta) sigma = aa*0.5/sqrtene + bb*0.03;
00061         else            sigma = aa*1.0/sqrtene + bb*0.07;
00062         if(1.+sigma > .0) break;
00063      }
00064   } else if(m_lumi == 2) {
00065      while(1) {
00066         aa=randGauss()->fire();
00067         bb=randGauss()->fire();
00068         cc=randGauss()->fire();
00069         dd=randGauss()->fire();
00070         if(abseta < m_BarrelForwardEta) sigma = aa*0.5/sqrtene + bb*0.03  + cc*epileup/pt;
00071         else            sigma = aa*1.0/sqrtene + bb*0.07  + cc*epileup/pt;
00072         if(1.+sigma > .0) break;
00073      }
00074 
00075   }                                
00076          smearedVec.setPx(vec.px()*(1.0+sigma));
00077          smearedVec.setPy(vec.py()*(1.0+sigma));
00078          smearedVec.setPz(vec.pz()*(1.0+sigma));
00079          smearedVec.setE(vec.e()*(1.0+sigma));
00080 
00081 
00082          return smearedVec;
00083 
00084   }
00085 
00086 }//end of namespace bracket
00087 
00088 
00089 
00090 
00091 
00092 
00093 

Generated on Tue Mar 18 11:18:24 2003 for AtlfastAlgs by doxygen1.3-rc1