Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EmcRecTofDigitCalib Class Reference

#include <EmcRecTofDigitCalib.h>

List of all members.

Public Member Functions

void Convert (TofDigiCol *tofDigiCol, RecEmcTofHitMap &tofHitMap)
void Convert (TofDigiCol *tofDigiCol, RecEmcTofHitMap &tofHitMap)
 EmcRecTofDigitCalib ()
 EmcRecTofDigitCalib ()
 ~EmcRecTofDigitCalib ()
 ~EmcRecTofDigitCalib ()


Constructor & Destructor Documentation

EmcRecTofDigitCalib::EmcRecTofDigitCalib  ) 
 

00011 {}

EmcRecTofDigitCalib::~EmcRecTofDigitCalib  ) 
 

00014 {}

EmcRecTofDigitCalib::EmcRecTofDigitCalib  ) 
 

EmcRecTofDigitCalib::~EmcRecTofDigitCalib  ) 
 


Member Function Documentation

void EmcRecTofDigitCalib::Convert TofDigiCol tofDigiCol,
RecEmcTofHitMap tofHitMap
 

void EmcRecTofDigitCalib::Convert TofDigiCol tofDigiCol,
RecEmcTofHitMap tofHitMap
 

00018 {
00019   TofDigiCol::iterator iter2;
00020   for(iter2=tofDigiCol->begin();
00021       iter2!=tofDigiCol->end();
00022       iter2++,iter2++) {
00023     
00024     Identifier id=(*iter2)->identify();
00025     bool   is_barrel    = TofID::is_barrel(id);
00026     int    layer        = TofID::layer(id);
00027     int    im           = TofID::phi_module(id);
00028     
00029     if(!is_barrel) return;
00030     
00031     double adc0 = RawDataUtil::TofCharge((*iter2)->getChargeChannel())*2;
00032     double tdc0 = RawDataUtil::TofTime((*iter2)->getTimeChannel());
00033     double adc1 = RawDataUtil::TofCharge((*(iter2+1))->getChargeChannel())*2;
00034     double tdc1 = RawDataUtil::TofTime((*(iter2+1))->getTimeChannel());
00035     
00036     double rand0 = (double)(rand()%100)/1000.-0.05;   //-0.05 --> 0.05
00037     double rand1 = (double)(rand()%100)/1000.-0.05;   //-0.05 --> 0.05
00038 
00039     //smear 5%
00040     adc0 *= (1+rand0);
00041     adc1 *= (1+rand1);
00042 
00043     double zpos, energy, e0, e1;
00044     zpos = 0.08331*(tdc1-tdc0);
00045     if(fabs(zpos)>1.15) continue;
00046 
00047     //ADC->energy
00048     if((adc0>46.&&adc0<920.) && (adc1<=46.||adc1>=920.)) {
00049       energy = adc0/exp(2.783+0.3133*zpos);
00050     } else if((adc1>46.&&adc1<920.) && (adc0<=46.||adc0>=920.)) {
00051       energy = adc1/exp(2.784-0.3079*zpos);
00052     } else if((adc0>46.&&adc0<920.) && (adc1>46.&&adc1<920.)) {
00053       e0 = adc0/exp(2.783+0.3133*zpos);
00054       e1 = adc1/exp(2.784-0.3079*zpos);
00055       energy = (e0+e1)/2;
00056     } else if(adc0>=920.&&adc1>=920.) {
00057       e0 = 920./exp(2.783+0.3133*zpos);
00058       e1 = 920./exp(2.784-0.3079*zpos);
00059       energy = e0>e1?e0:e1;
00060     } else {
00061       continue;
00062     }
00063 
00064     double phi,r;
00065     if(layer==0) {
00066       phi=(im+0.5)*CLHEP::twopi/88.;
00067       r=838.5;
00068     } else {
00069       phi=im*CLHEP::twopi/88.;
00070       r=895.5;
00071     }
00072 
00073     zpos*=1000; //zpos: m->mm
00074     HepPoint3D pos(r*cos(phi), r*sin(phi), zpos);
00075      
00076     tofHitMap[im+layer*88] = RecEmcTofHit(id, energy, pos);
00077   }
00078 }


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:02:08 2011 for BOSS6.5.5 by  doxygen 1.3.9.1