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

DedxCalibTzero Class Reference

#include <DedxCalibTzero.h>

Inheritance diagram for DedxCalibTzero:

DedxCalib DedxCalib List of all members.

Public Member Functions

void AnalyseHists ()
void AnalyseHists ()
void BookHists ()
void BookHists ()
void checkSelections ()
void checkSelections ()
 DedxCalibTzero (const std::string &name, ISvcLocator *pSvcLocator)
 DedxCalibTzero (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode execute ()
virtual StatusCode execute ()
void FillHists ()
void FillHists ()
void FillHistsFromTree ()
void FillHistsFromTree ()
void FillTestHists ()
void FillTestHists ()
void FillTree ()
void FillTree ()
virtual StatusCode finalize ()
virtual StatusCode finalize ()
virtual Float_t GetChargeOffCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z)
virtual Float_t GetChargeOffCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z)
Float_t GetChargeOnCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z)
Float_t GetChargeOnCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z)
virtual StatusCode initialize ()
virtual StatusCode initialize ()
void ReadBetheBlochParameters ()
void ReadBetheBlochParameters ()
void ReadCalibdEdxParameters ()
void ReadCalibdEdxParameters ()
void WriteCalibdEdxParameters ()
void WriteCalibdEdxParameters ()
void WriteHists ()
void WriteHists ()

Public Attributes

TObjArray * m_caliblist
TObjArray * m_caliblist
vector< TH1F * > m_hist_e
vector< TH1F * > m_hist_e
vector< TH1F * > m_histcalib
vector< TH1F * > m_histcalib
TRandom * m_rand
TRandom * m_rand
TObjArray * m_spacelist
TObjArray * m_spacelist

Protected Attributes

int calib_flag
bool ddgflag
IDedxCorrecSvcexsvc
IDedxCorrecSvcexsvc
IMdcGeomSvcgeosvc
IMdcGeomSvcgeosvc
bool ggsflag
bool layergflag
MsgStream log
std::string m_constrootfile
int m_correc_flag
std::string m_inputfile
int m_par_flag
int m_phshape_flag
std::string m_rootfile
bool wiregflag
bool zdepflag

Constructor & Destructor Documentation

DedxCalibTzero::DedxCalibTzero const std::string &  name,
ISvcLocator *  pSvcLocator
 

00028   : DedxCalib(name, pSvcLocator)
00029 {
00030   log<<MSG::INFO<<"DedxCalibTzero::DedxCalibTzero( )..."<<endreq;
00031 }

DedxCalibTzero::DedxCalibTzero const std::string &  name,
ISvcLocator *  pSvcLocator
 


Member Function Documentation

void DedxCalibTzero::AnalyseHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibTzero::AnalyseHists  )  [virtual]
 

Implements DedxCalib.

00325 { 
00326   log<<MSG::INFO<<"DedxCalibTzero::AnalyseHists( )..."<<endreq;
00327 
00328   double fitmean=0;
00329   double fiterr=0;
00330   double fitsigma=0;
00331   double sigmaerr=0;
00332  
00333   for(int bin=0; bin<NumBinT0; bin++) {
00334     m_hist_e[bin]->Fit("gaus", "Q" );
00335     fitmean = m_hist_e[bin] -> GetFunction("gaus") -> GetParameter(1);
00336     fiterr  = m_hist_e[bin] -> GetFunction("gaus") -> GetParError(1);
00337     fitsigma  = m_hist_e[bin] -> GetFunction("gaus") -> GetParameter(2);
00338     sigmaerr  = m_hist_e[bin] -> GetFunction("gaus") -> GetParError(2);
00339     fitmean = fitmean/NormalMean;
00340     fiterr  = fiterr/NormalMean;
00341     fitsigma=fitsigma/NormalMean;
00342     sigmaerr=sigmaerr/NormalMean;
00343 
00344     if(bin==0){
00345       if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){
00346         m_histcalib[0]->SetBinContent(1,fitmean);
00347         m_histcalib[0]->SetBinError(1,fiterr);
00348       }
00349       else{
00350         m_histcalib[0]->SetBinContent(1,0.00);
00351         m_histcalib[0]->SetBinError(1,0.05);
00352       }
00353     }
00354     else if(bin==1){
00355       if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){
00356         m_histcalib[1]->SetBinContent(1,fitmean);
00357         m_histcalib[1]->SetBinError(1,fiterr);
00358       }
00359       else{
00360         m_histcalib[1]->SetBinContent(1,0.00);
00361         m_histcalib[1]->SetBinError(1,0.05);
00362       }
00363     }
00364     else if(bin>=2 && bin<NumBinT0-3){
00365       if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){
00366         m_histcalib[2]->SetBinContent(bin-1,fitmean);
00367         m_histcalib[2]->SetBinError(bin-1,fiterr);
00368       }
00369       else{
00370         m_histcalib[2]->SetBinContent(bin-1,0.00);
00371         m_histcalib[2]->SetBinError(bin-1,0.05);
00372       }
00373       //resolution
00374       if(fitmean>0){
00375         m_histcalib[6]->SetBinContent(bin-1,fitsigma/fitmean);
00376         m_histcalib[6]->SetBinError(bin-1, sqrt( sigmaerr*sigmaerr/(fitmean*fitmean)+fitsigma*fitsigma*fiterr*fiterr/pow(fitmean,4) ) ); 
00377       }
00378       else{
00379         m_histcalib[6]->SetBinContent(bin-1,0);
00380         m_histcalib[6]->SetBinError(bin-1,0); 
00381       }
00382     }
00383     else if(bin==NumBinT0-3){
00384       if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){
00385         m_histcalib[3]->SetBinContent(1,fitmean);
00386         m_histcalib[3]->SetBinError(1,fiterr);
00387       }
00388       else{
00389         m_histcalib[3]->SetBinContent(1,0.00);
00390         m_histcalib[3]->SetBinError(1,0.05);
00391       }
00392     }
00393     else if(bin==NumBinT0-2){
00394       if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){
00395         m_histcalib[4]->SetBinContent(1,fitmean);
00396         m_histcalib[4]->SetBinError(1,fiterr);
00397       }
00398       else{
00399         m_histcalib[4]->SetBinContent(1,0.00);
00400         m_histcalib[4]->SetBinError(1,0.05);
00401       }
00402     }
00403     else{
00404       if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){
00405         m_histcalib[5]->SetBinContent(1,fitmean);
00406         m_histcalib[5]->SetBinError(1,fiterr);
00407       }
00408       else{
00409         m_histcalib[5]->SetBinContent(1,0.00);
00410         m_histcalib[5]->SetBinError(1,0.05);
00411       }
00412     }
00413     
00414 
00415   }
00416   
00417 }                                                                                                

void DedxCalibTzero::BookHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibTzero::BookHists  )  [virtual]
 

Implements DedxCalib.

00091 {
00092   log<<MSG::INFO<<"DedxCalibTzero::BookHists( )..."<<endreq;  
00093   log<<MSG::DEBUG<<" bookhist...1" <<endreq;
00094   m_spacelist = new TObjArray(0);
00095   m_caliblist = new TObjArray(0);
00096   log<<MSG::DEBUG<<" bookhist...2" <<endreq;
00097   m_rand = new TRandom();
00098   std::string hlabel;
00099   log<<MSG::DEBUG<<" bookhist...3" <<endreq;
00100  
00101   for(int mm=0; mm<NumBinT0; mm++) {
00102       std::ostringstream strout; 
00103       strout << "Dedx_Vs" <<"_T0_"<<mm;
00104       hlabel = strout.str();
00105       TH1F *space_e = new TH1F(hlabel.c_str(), hlabel.c_str(), NumHistBins,MinHistValue,MaxHistValue);
00106       //    wireg->Print("base"); 
00107       space_e->GetXaxis()->SetTitle("dE/dx(eV/1.5cm)");
00108       space_e->GetYaxis()->SetTitle("entries/(40eV/1.5cm)");
00109       
00110       m_hist_e.push_back(space_e);
00111       m_spacelist -> Add(space_e);
00112   }
00113 
00114   std::ostringstream strout1;
00115   strout1 << "T0_Effect_1"; 
00116   hlabel = strout1.str();
00117   TH1F *calib1 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 0, 550);
00118   //    wireg->Print("base");
00119   calib1->GetXaxis()->SetTitle("T0");
00120   calib1->GetYaxis()->SetTitle("normalized dE/dx");
00121   
00122   std::ostringstream strout2;
00123   strout2 << "T0_Effect_2"; 
00124   hlabel = strout2.str();
00125   TH1F *calib2 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 550, 600);
00126   //    wireg->Print("base");
00127   calib2->GetXaxis()->SetTitle("T0");
00128   calib2->GetYaxis()->SetTitle("normalized dE/dx");
00129   
00130   
00131   std::ostringstream strout3;
00132   strout3 << "T0_Effect_3"; 
00133   hlabel = strout3.str();
00134   TH1F *calib3 = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinT0-5, 600, 1200);
00135   //    wireg->Print("base");
00136   calib3->GetXaxis()->SetTitle("T0");
00137   calib3->GetYaxis()->SetTitle("normalized dE/dx");
00138   
00139   std::ostringstream strout4;
00140   strout4 << "T0_Effect_4"; 
00141   hlabel = strout4.str();
00142   TH1F *calib4 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 1200,1250);
00143   //    wireg->Print("base");
00144   calib4->GetXaxis()->SetTitle("T0");
00145   calib4->GetYaxis()->SetTitle("normalized dE/dx");
00146 
00147   
00148   std::ostringstream strout5;
00149   strout5 << "T0_Effect_5"; 
00150   hlabel = strout5.str();
00151   TH1F *calib5 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 1250,1300);
00152   //    wireg->Print("base");
00153   calib5->GetXaxis()->SetTitle("T0");
00154   calib5->GetYaxis()->SetTitle("normalized dE/dx");
00155 
00156   std::ostringstream strout6;
00157   strout6 << "T0_Effect_6"; 
00158   hlabel = strout6.str();
00159   TH1F *calib6 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 1300,1500);
00160   //    wireg->Print("base");
00161   calib6->GetXaxis()->SetTitle("T0");
00162   calib6->GetYaxis()->SetTitle("normalized dE/dx");
00163 
00164   std::ostringstream strout7;
00165   strout7 << "dedx resoltuion vs t0"; 
00166   hlabel = strout7.str();
00167   TH1F *calib7 = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinT0-5, 600,1200);
00168   //    wireg->Print("base");
00169   calib7->GetXaxis()->SetTitle("T0");
00170   calib7->GetYaxis()->SetTitle("dE/dx resolution");
00171 
00172   m_histcalib.push_back(calib1);
00173   m_histcalib.push_back(calib2);
00174   m_histcalib.push_back(calib3);
00175   m_histcalib.push_back(calib4);
00176   m_histcalib.push_back(calib5);
00177   m_histcalib.push_back(calib6);
00178   m_histcalib.push_back(calib7);
00179   
00180   m_caliblist -> Add(calib1);
00181   m_caliblist -> Add(calib2);
00182   m_caliblist -> Add(calib3);
00183   m_caliblist -> Add(calib4);
00184   m_caliblist -> Add(calib5);
00185   m_caliblist -> Add(calib6);
00186   m_caliblist -> Add(calib7);
00187   
00188   
00189 }

void DedxCalib::checkSelections  )  [inherited]
 

void DedxCalib::checkSelections  )  [inherited]
 

00121                                 {
00122   log<<MSG::INFO<<"DedxCalib::checkSelections()...."<<endreq;
00123 }

virtual StatusCode DedxCalib::execute  )  [virtual, inherited]
 

StatusCode DedxCalib::execute  )  [virtual, inherited]
 

00075                               {
00076   
00077   this->FillTree();
00078   
00079   this->FillHists();
00080   return StatusCode::SUCCESS;
00081 }

void DedxCalibTzero::FillHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibTzero::FillHists  )  [virtual]
 

Implements DedxCalib.

00192 {
00193   log<<MSG::INFO<<"DedxCalibTzero::FillHists( )..."<<endreq;  
00194   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00195   if (!eventHeader) {
00196     log << MSG::FATAL << "Could not find Event Header" << endreq;
00197     return;
00198   } 
00199   int event = eventHeader->eventNumber();
00200   int runNO = eventHeader->runNumber();
00201   int typFlag; //data type flag: 0:MC data,   1: 2150,      2:2200
00202   if(runNO<0) typFlag =0;
00203   else if(runNO>=0 && runNO<5459) typFlag =1;
00204   else if(runNO>=5459 && runNO<8093) typFlag =2;
00205   else if(runNO>=8093) typFlag =3; 
00206  
00207   double t0=-99;
00208   int esTimeflag = -1;
00209   SmartDataPtr<RecEsTimeCol> estimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
00210   if( ! estimeCol) {
00211           log << MSG::WARNING << "Could not find EvTimeCol" << endreq;
00212   }
00213   else{
00214     RecEsTimeCol::iterator iter_evt = estimeCol->begin();
00215     for(; iter_evt!=estimeCol->end(); iter_evt++){
00216       t0 =  (*iter_evt)->getTest();
00217       esTimeflag = (*iter_evt)->getStat();
00218     }
00219   }
00220   
00221 
00222   Identifier mdcid;
00223   SmartDataPtr<RecMdcTrackCol> trkCol(eventSvc(),"/Event/Recon/RecMdcTrackCol");
00224   if (!trkCol) { 
00225           log << MSG::WARNING << "Could not find RecMdcTrackCol" << endreq;
00226           return;
00227   } 
00228   int layid, hid, localwid, lr;
00229   double adc_raw, costhe, zhit, driftdist, dd, ph, sinenta,eangle, dipan, pathlength, sintheta, rphi_path;
00230   double m_driftd, driftd; 
00231   double m_P, logp;
00232   log << MSG::INFO << "Begin to check RecMdcTrackCol"<<endreq; 
00233   RecMdcTrackCol::iterator iter_trk = trkCol->begin();
00234   for( ; iter_trk != trkCol->end(); iter_trk++) {
00235           HepVector a = (*iter_trk)->helix();
00236           HepSymMatrix tkErrM = (*iter_trk)->err();
00237           double m_d0E   = tkErrM[0][0];
00238           double m_phi0E = tkErrM[1][1];
00239           double m_cpaE  = tkErrM[2][2];
00240           double m_z0E   = tkErrM[3][3]; 
00241 
00242           vector<double> phlist;
00243           HepPoint3D IP(0,0,0);
00244           Dedx_Helix exhel(IP, a);
00245           //QvsDipAngP->Reset();
00246           log << MSG::DEBUG << "hitList of this  track:" << endreq;
00247           HitRefVec gothits = (*iter_trk)->getVecHits();
00248           HitRefVec::iterator it_gothit = gothits.begin();
00249 
00250           //double m_Pt = 1.0/fabs(a[2]);
00251           //m_P = m_Pt*sqrt(1 + (a[4]*a[4]));
00252           //if(a(3)==0) continue;
00253           //float m_Pt = 1.0/fabs( a(3) );
00254           //m_P = m_Pt*sqrt(1 + a(5)*a(5));
00255           
00256           m_P=(*iter_trk)->p();
00257           
00258           if(m_P>1.95||m_P<1.8) continue;
00259           for( ; it_gothit != gothits.end(); it_gothit++) {
00260             mdcid = (*it_gothit)->getMdcId();
00261             layid =  MdcID::layer(mdcid);
00262             localwid = MdcID::wire(mdcid);
00263             adc_raw = (*it_gothit)->getAdc();
00264             zhit = (*it_gothit)->getZhit();
00265             lr = (*it_gothit)->getFlagLR();
00266             if(lr == 0 || lr == 2) m_driftd = (*it_gothit)->getDriftDistLeft();
00267             if(lr == 1 ) m_driftd = (*it_gothit)->getDriftDistRight();
00268             driftd = abs(m_driftd);    
00269             dd = fabs((*it_gothit)->getDoca());
00270             sinenta = sin((*it_gothit)->getEntra());    
00271             costhe = cos(M_PI_2-atan(a[4]));
00272             sintheta = sin(M_PI_2-atan(a[4]));  
00273             eangle = (*it_gothit)->getEntra();
00274             eangle = eangle/M_PI;
00275             int ntpFlag = 1;
00276             ph = exsvc->StandardHitCorrec(0,typFlag, ntpFlag, runNO, exhel, mdcid, adc_raw, dd, eangle, zhit, costhe );
00277             pathlength = exsvc->PathL(ntpFlag, exhel, layid, localwid, zhit);
00278             rphi_path = pathlength * sintheta;
00279             if(layid <8) continue;
00280             // {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Iner_RPhi_PathMinCut || driftd>Iner_DriftDistCut) continue;}
00281             else if(layid >= 8)
00282               {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Out_RPhi_PathMinCut || driftd>Out_DriftDistCut) continue;}      
00283             if( ph>0 ) phlist.push_back(ph);
00284           }
00285           sort(phlist.begin(),phlist.end());
00286           int nsampl = (int)( phlist.size()*Truncate );
00287           int smpl = (int)(phlist.size()*(Truncate+0.05));
00288           int min_cut = (int)( phlist.size()*0.05 + 0.5 );
00289           double qSum = 0;
00290           unsigned i = 0;
00291           for(vector<double>::iterator ql= phlist.begin();ql!=phlist.end();ql++){
00292                   i++;
00293                   if(i<= smpl && i>=min_cut ) qSum += (*ql);
00294           }
00295           float trunc=qSum/(smpl-min_cut+1);
00296           double m_dEdx =  exsvc->StandardTrackCorrec(0, typFlag,1.0,runNO,trunc,costhe,t0);
00297           
00298           if(t0> T0Max || t0<T0Min) continue;
00299           hid=0;
00300           //cout<<"bin step is"<<t0_step<<endl;
00301           if(t0>0 && t0<=550)
00302             m_hist_e[0]->Fill(m_dEdx);
00303           else if(t0>550 && t0<=600)
00304             m_hist_e[1]->Fill(m_dEdx);
00305           else if(t0>600 && t0<=1200){
00306             for(int kk=0; kk<NumBinT0-5; kk++) {
00307               if((t0>=600+t0_step*kk)&&(costhe<600+t0_step*(kk+1))) {
00308                 hid=kk+2;
00309               }
00310             }
00311             m_hist_e[hid]->Fill(m_dEdx);
00312           }
00313           else if(t0>1200 && t0<=1250)
00314             m_hist_e[NumBinT0-3]->Fill(m_dEdx);
00315           else if(t0>1250 && t0<=1300)
00316             m_hist_e[NumBinT0-2]->Fill(m_dEdx);
00317           else
00318             m_hist_e[NumBinT0-1]->Fill(m_dEdx);
00319           
00320           phlist.clear();
00321   }
00322 }

void DedxCalibTzero::FillHistsFromTree  )  [virtual]
 

Implements DedxCalib.

void DedxCalibTzero::FillHistsFromTree  )  [virtual]
 

Implements DedxCalib.

00421 {
00422   log<<MSG::INFO<<"DedxCalibTzero::FillHistsFromTree( )..."<<endreq;  
00423 }

void DedxCalib::FillTestHists  )  [inherited]
 

void DedxCalib::FillTestHists  )  [inherited]
 

00117                               {
00118   log<<MSG::INFO<<"DedxCalib::FillTestHists()...."<<endreq;
00119 }

void DedxCalib::FillTree  )  [inherited]
 

void DedxCalib::FillTree  )  [inherited]
 

00105                          {
00106   log<<MSG::INFO<<"DedxCalib::FillTree()...."<<endreq;
00107 }

virtual StatusCode DedxCalib::finalize  )  [virtual, inherited]
 

StatusCode DedxCalib::finalize  )  [virtual, inherited]
 

00084                                {
00085   
00086   log << MSG::INFO << "DedxCalib finalize() ..." << endreq;
00087   this->AnalyseHists();
00088   
00089   this->WriteCalibdEdxParameters();
00090   this->WriteHists();
00091 
00092   this->FillTestHists();
00093 
00094   
00095   
00096   return StatusCode::SUCCESS;
00097 }

virtual Float_t DedxCalibTzero::GetChargeOffCorr Int_t  il,
Int_t  iw,
Float_t  ChargeIn,
Float_t  path,
Float_t  doca,
Float_t  EAngle,
Float_t  dipAngle,
Float_t  z
[virtual]
 

Implements DedxCalib.

Float_t DedxCalibTzero::GetChargeOffCorr Int_t  il,
Int_t  iw,
Float_t  ChargeIn,
Float_t  path,
Float_t  doca,
Float_t  EAngle,
Float_t  dipAngle,
Float_t  z
[virtual]
 

Implements DedxCalib.

00035 {
00036   log<<MSG::INFO<<"DedxCalibTzero::GetChargeOffCorr( )..."<<endreq;
00037   return 1.0;
00038 }

Float_t DedxCalib::GetChargeOnCorr Int_t  il,
Int_t  iw,
Float_t  ChargeIn,
Float_t  path,
Float_t  doca,
Float_t  EAngle,
Float_t  dipAngle,
Float_t  z
[inherited]
 

Float_t DedxCalib::GetChargeOnCorr Int_t  il,
Int_t  iw,
Float_t  ChargeIn,
Float_t  path,
Float_t  doca,
Float_t  EAngle,
Float_t  dipAngle,
Float_t  z
[inherited]
 

00127                                                                {
00128   
00129 }

virtual StatusCode DedxCalib::initialize  )  [virtual, inherited]
 

StatusCode DedxCalib::initialize  )  [virtual, inherited]
 

00035                                  {
00036   log << MSG::INFO << "DedxCalib initialze() ..." << endreq;
00037   /*StatusCode scint = Service::initialize();
00038   if( scint.isFailure() ) return scint;
00039   IIncidentSvc* incsvc;
00040   scint = service("IncidentSvc", incsvc);
00041   int priority = 100;
00042   if( sc.isSuccess() ){
00043     incsvc -> addListener(this, "BeginEvent", priority);
00044    //incsvc -> addListener(this, "NewRun", priority);
00045   }*/  
00046 
00047   StatusCode sc = service("MdcGeomSvc", geosvc);   
00048   if (sc ==  StatusCode::SUCCESS) {              
00049     log << MSG::INFO <<"MdcGeomSvc is running"<<endl;
00050   } else {
00051     log << MSG::ERROR <<"MdcGeomSvc is failed"<<endl;
00052     return StatusCode::SUCCESS;
00053   }
00054 
00055   StatusCode scex = service("DedxCorrecSvc", exsvc);
00056   if (scex ==  StatusCode::SUCCESS) {              
00057     log << MSG::INFO <<"Hi, DedxCorrectSvc is running"<<endl;
00058   } else {
00059     log << MSG::ERROR <<"DedxCorrectSvc is failed"<<endl;
00060     return StatusCode::SUCCESS;
00061   }
00062 
00063   exsvc->set_flag( calib_flag );
00064   this->checkSelections();
00065   log << MSG::INFO <<"DedxCalib: read correction parameters"<<endreq;
00066   this->ReadCalibdEdxParameters();
00067   this->FillHistsFromTree();
00068   
00069   this->BookHists();
00070   
00071   return StatusCode::SUCCESS;
00072 }

void DedxCalib::ReadBetheBlochParameters  )  [inherited]
 

void DedxCalib::ReadBetheBlochParameters  )  [inherited]
 

void DedxCalib::ReadCalibdEdxParameters  )  [inherited]
 

void DedxCalib::ReadCalibdEdxParameters  )  [inherited]
 

00109                                         {
00110   log<<MSG::INFO<<"DedxCalib::ReadCalibdEdxParameters()...."<<endreq;
00111 }

void DedxCalibTzero::WriteCalibdEdxParameters  )  [virtual]
 

Reimplemented from DedxCalib.

void DedxCalibTzero::WriteCalibdEdxParameters  )  [virtual]
 

Reimplemented from DedxCalib.

00426 {  
00427   log<<MSG::INFO<<"DedxCalibTzero::WriteCalibdEdxParameters( )..."<<endreq;
00428 }

void DedxCalibTzero::WriteHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibTzero::WriteHists  )  [virtual]
 

Implements DedxCalib.

00041 {
00042   log<<MSG::INFO<<"DedxCalibDipAngle::WriteHists( )..."<<endreq;
00043 
00044   
00045   TTree tree("t0calib","t0calib");
00046   double tmp1[1];
00047   double tmp2[1];
00048   tree.Branch("t0",&tmp1,"t0/D");
00049   tree.Branch("dedx",&tmp2,"dedx/D");
00050   
00051   tmp1[0]=m_histcalib[0]->GetBinCenter(1);
00052   tmp2[0]=m_histcalib[0]->GetBinContent(1);
00053   tree.Fill();
00054   tmp1[0]=m_histcalib[1]->GetBinCenter(1);
00055   tmp2[0]=m_histcalib[1]->GetBinContent(1);
00056   tree.Fill();
00057   for(int i=1;i<=(NumBinT0-5);i++){
00058     tmp1[0]=m_histcalib[2]->GetBinCenter(i);
00059     tmp2[0]=m_histcalib[2]->GetBinContent(i);
00060     tree.Fill();
00061   }
00062   tmp1[0]=m_histcalib[3]->GetBinCenter(1);
00063   tmp2[0]=m_histcalib[3]->GetBinContent(1);
00064   tree.Fill();
00065   tmp1[0]=m_histcalib[4]->GetBinCenter(1);
00066   tmp2[0]=m_histcalib[4]->GetBinContent(1);
00067   tree.Fill();
00068   tmp1[0]=m_histcalib[5]->GetBinCenter(1);
00069   tmp2[0]=m_histcalib[5]->GetBinContent(1);
00070   tree.Fill();
00071 
00072   TFile fhist("/ihepbatch/besd13/chunlei/calib/t0calib.root", "recreate");
00073   tree.Write();
00074   m_spacelist -> Write();
00075   m_caliblist -> Write();
00076   fhist.Close();
00077 
00078  
00079   for(int i=0; i<NumBinT0; i++) delete m_hist_e[i];
00080   for(int i=0; i<6; i++) delete m_histcalib[i];
00081   delete m_spacelist;
00082   delete m_caliblist;
00083   //delete spcharge;
00084   delete m_rand;
00085   
00086  
00087 }


Member Data Documentation

int DedxCalib::calib_flag [protected, inherited]
 

bool DedxCalib::ddgflag [protected, inherited]
 

IDedxCorrecSvc* DedxCalib::exsvc [protected, inherited]
 

IDedxCorrecSvc* DedxCalib::exsvc [protected, inherited]
 

IMdcGeomSvc* DedxCalib::geosvc [protected, inherited]
 

IMdcGeomSvc* DedxCalib::geosvc [protected, inherited]
 

bool DedxCalib::ggsflag [protected, inherited]
 

bool DedxCalib::layergflag [protected, inherited]
 

MsgStream DedxCalib::log [protected, inherited]
 

TObjArray* DedxCalibTzero::m_caliblist
 

TObjArray* DedxCalibTzero::m_caliblist
 

std::string DedxCalib::m_constrootfile [protected, inherited]
 

int DedxCalib::m_correc_flag [protected, inherited]
 

vector<TH1F*> DedxCalibTzero::m_hist_e
 

vector<TH1F*> DedxCalibTzero::m_hist_e
 

vector<TH1F*> DedxCalibTzero::m_histcalib
 

vector<TH1F*> DedxCalibTzero::m_histcalib
 

std::string DedxCalib::m_inputfile [protected, inherited]
 

int DedxCalib::m_par_flag [protected, inherited]
 

int DedxCalib::m_phshape_flag [protected, inherited]
 

TRandom* DedxCalibTzero::m_rand
 

TRandom* DedxCalibTzero::m_rand
 

std::string DedxCalib::m_rootfile [protected, inherited]
 

TObjArray* DedxCalibTzero::m_spacelist
 

TObjArray* DedxCalibTzero::m_spacelist
 

bool DedxCalib::wiregflag [protected, inherited]
 

bool DedxCalib::zdepflag [protected, inherited]
 


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