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

DedxCalibDriftDist Class Reference

#include <DedxCalibDriftDist.h>

Inheritance diagram for DedxCalibDriftDist:

DedxCalib DedxCalib List of all members.

Public Member Functions

void AnalyseHists ()
void AnalyseHists ()
void BookHists ()
void BookHists ()
void checkSelections ()
void checkSelections ()
 DedxCalibDriftDist (const std::string &name, ISvcLocator *pSvcLocator)
 DedxCalibDriftDist (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 ()

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

Private Attributes

TObjArray * m_caliblist
TObjArray * m_caliblist
vector< TH1F * > m_hist
vector< TH1F * > m_hist
vector< TH1F * > m_histcalib
vector< TH1F * > m_histcalib
TObjArray * m_list
TObjArray * m_list
TRandom * m_rand
TRandom * m_rand

Constructor & Destructor Documentation

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

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

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


Member Function Documentation

void DedxCalibDriftDist::AnalyseHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibDriftDist::AnalyseHists  )  [virtual]
 

Implements DedxCalib.

00262 {
00263   log<<MSG::INFO<<"DedxCalibDriftDist::AnalyseHists( )..."<<endreq;
00264   
00265   TF1* func;
00266   if(m_phshape_flag==0) {
00267     func = new TF1("mylan",mylan,1000,4000,4);
00268     func->SetParameters(10000.0,2010.1,300,-1.0);
00269   } else if(m_phshape_flag==1) { 
00270     func = new TF1("landaun",landaun,1000,4000,3);
00271     func->SetParameters(2000.0,300.0);
00272   } else if(m_phshape_flag==2) { 
00273     func = new TF1("land",Landau,1000,4000,2);
00274     func->SetParameters(2010.1,300);
00275   } else if(m_phshape_flag==3) { 
00276     func = new TF1("vavi",Vavilov,1000,4000,2);
00277     func->SetParameters(3.1,0.4);
00278   } else if(m_phshape_flag==4) { 
00279     func = new TF1("asym",AsymGauss,1000,4000,4);
00280     func->SetParameters(10000.0,2000.0,300.0,100.);
00281   } 
00282   cout<<"check here 1 ------------------------------"<<endl;
00283 
00284 
00285   func->SetLineWidth(2.1);
00286   func->SetLineColor(2);   
00287   Double_t entry, mean, rms;
00288   Double_t binmax;
00289   Double_t lp[3]; 
00290   for(int hid=0; hid<43*NumBinDrifDist; hid++){
00291     entry = m_hist[hid]->GetEntries();
00292     mean = m_hist[hid]->GetMean();
00293     rms = m_hist[hid]->GetRMS();
00294     binmax = m_hist[hid]->GetMaximumBin();
00295     lp[1] = m_hist[hid]->GetBinCenter(binmax);
00296     lp[2] = 200;
00297     lp[0] = (m_hist[hid]->GetBinContent(binmax)+m_hist[hid]->GetBinContent(binmax-1)+m_hist[hid]->GetBinContent(binmax+1))/3;
00298     
00299     if(m_phshape_flag==0) {
00300       cout<<"check here 2 ------------------------------"<<endl;    
00301       func->SetParameters(entry, mean, rms, -0.8);
00302     } else if(m_phshape_flag==1) {     
00303       //func->SetParameters(entry, 0.7*mean, rms );
00304       func->SetParameters(lp[0], lp[1], lp[2] );
00305     } else if(m_phshape_flag==2) {     
00306       func->SetParameters(0.7*mean, rms );
00307     } else if(m_phshape_flag==3) { 
00308       func->SetParameters(0.05, 0.6);
00309     } else if(m_phshape_flag==4) {     
00310       func->SetParameters(entry, mean, rms, 1.0 );
00311     }
00312     m_hist[hid]->Fit(func, "Q" );    
00313   }         
00314   cout<<"check here 3 ------------------------------"<<endl;
00315   double fitmean[NumBinDrifDist], mean0;
00316   if(m_phshape_flag==0) {
00317     mean0 = m_hist[DrifDistStandard] -> GetFunction("mylan") -> GetParameter(1); 
00318   } else if(m_phshape_flag==1) {     
00319     mean0 = m_hist[DrifDistStandard] -> GetFunction("landaun") -> GetParameter(1); 
00320   } else if(m_phshape_flag==2) {     
00321     mean0 = m_hist[DrifDistStandard] -> GetFunction("land") -> GetParameter(1); 
00322   } else if(m_phshape_flag==3) {     
00323     mean0 = m_hist[DrifDistStandard] -> GetFunction("vavi") -> GetParameter(1); 
00324   } else if(m_phshape_flag==4) {     
00325     mean0 = m_hist[DrifDistStandard] -> GetFunction("asym") -> GetParameter(1); 
00326   }
00327  
00328   cout<<"NormalMean : "<<NormalMean<<endl; 
00329   for(int lay=0; lay<43; lay++) { 
00330     for(int bin=0; bin<NumBinDrifDist; bin++) {
00331       int hid=lay*NumBinDrifDist+bin;
00332       if(m_phshape_flag==0) {
00333         fitmean[bin] = m_hist[hid] -> GetFunction("mylan") -> GetParameter(1); 
00334       } else if(m_phshape_flag==1) {     
00335         fitmean[bin] = m_hist[hid] -> GetFunction("landaun") -> GetParameter(1); 
00336       } else if(m_phshape_flag==2) {     
00337         fitmean[bin] = m_hist[hid] -> GetFunction("land") -> GetParameter(1); 
00338       } else if(m_phshape_flag==3) {     
00339         fitmean[bin] = m_hist[hid] -> GetFunction("vavi") -> GetParameter(1); 
00340       } else if(m_phshape_flag==4) {     
00341         fitmean[bin] = m_hist[hid] -> GetFunction("asym") -> GetParameter(1); 
00342       }
00343       
00344       /*if(mean0) {
00345         fitmean[bin] = fitmean[bin]/mean0;
00346       } else {
00347         fitmean[bin] = fitmean[bin]/2000.0;
00348       }*/
00349       cout<<"fitmean["<<bin<<"] : "<<fitmean[bin]<<endl;
00350       fitmean[bin] = fitmean[bin]/NormalMean;
00351       if(lay<8)m_histcalib[lay]->Fill(Iner_step*bin+Iner_step/2+Iner_DrifDistMin, fitmean[bin]);
00352       if(lay>=8)m_histcalib[lay]->Fill(Out_step*bin+Out_step/2+Out_DrifDistMin, fitmean[bin]);
00353     }                   
00354   }        
00355   
00356   TF1* parfunc;
00357   parfunc = new TF1("cheby3",ChebyP3,0.0,15.0,4);
00358   parfunc->SetParameters(10.0,1.0,3.1,0.4);
00359   parfunc->SetLineWidth(2.1);
00360   parfunc->SetLineColor(2);   
00361   for(int lay=0; lay<43; lay++) { 
00362     if(m_par_flag==0) m_histcalib[lay]->Fit(parfunc,"Q");
00363     if(m_par_flag==1) m_histcalib[lay]->Fit("pol3","Q");
00364   }
00365 }

void DedxCalibDriftDist::BookHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibDriftDist::BookHists  )  [virtual]
 

Implements DedxCalib.

00095 {
00096   log<<MSG::INFO<<"DedxCalibDriftDist::BookHists( )..."<<endreq;  
00097   log<<MSG::DEBUG<<" bookhist...1" <<endreq;                   
00098   m_list = new TObjArray(0);
00099   m_caliblist = new TObjArray(0);
00100   log<<MSG::DEBUG<<" bookhist...2" <<endreq;                   
00101   m_rand = new TRandom();
00102   std::string hlabel;            
00103   log<<MSG::DEBUG<<" bookhist...3" <<endreq;
00104   
00105   for(int jj=0; jj<43; jj++) {
00106     for(int mm=0; mm<NumBinDrifDist; mm++) {
00107       std::ostringstream strout; 
00108       strout << "Gain_Layer_" << jj <<"_DriftDist_"<<mm;
00109       hlabel = strout.str();
00110       TH1F *ddg;
00111       if(jj<8) {
00112       ddg = new TH1F(hlabel.c_str(), hlabel.c_str(), NumHistBins,Iner_MinHistValue,Iner_MaxHistValue);    
00113       ddg->GetXaxis()->SetTitle("dE/dx(eV/1.5cm)");
00114       ddg->GetYaxis()->SetTitle("entries/(40eV/1.5cm)");
00115       } else {
00116       ddg = new TH1F(hlabel.c_str(), hlabel.c_str(), NumHistBins,MinHistValue,MaxHistValue);
00117       ddg->GetXaxis()->SetTitle("dE/dx(eV/1.5cm)");
00118       ddg->GetYaxis()->SetTitle("entries/(40eV/1.5cm)");
00119       //    wireg->Print("base");
00120       }
00121     m_hist.push_back(ddg);
00122     m_list -> Add(ddg); 
00123     }
00124     std::ostringstream strout2; 
00125     strout2 << "DriftDist_Layer_" << jj ;
00126     hlabel = strout2.str();
00127     TH1F *calib;
00128     if(jj<8) {
00129       calib = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinDrifDist, Iner_DrifDistMin, Iner_DrifDistMax);
00130       calib->GetXaxis()->SetTitle("drift distance(mm)");
00131       calib->GetYaxis()->SetTitle("normalized dE/dx");
00132     } else {
00133       calib = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinDrifDist, Out_DrifDistMin, Out_DrifDistMax);
00134       calib->GetXaxis()->SetTitle("drift distance(mm)");
00135       calib->GetYaxis()->SetTitle("normalized dE/dx");
00136     }
00137     //    wireg->Print("base");
00138     m_histcalib.push_back(calib);                                              
00139     m_caliblist -> Add(calib);                             
00140   }
00141   log<<MSG::DEBUG<<" m_hist size..." <<m_hist.size()<<endreq;  
00142 }

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 DedxCalibDriftDist::FillHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibDriftDist::FillHists  )  [virtual]
 

Implements DedxCalib.

00145 {
00146   log<<MSG::INFO<<"DedxCalibDriftDist::FillHists( )..."<<endreq;  
00147   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00148   if (!eventHeader) {
00149     log << MSG::FATAL << "Could not find Event Header" << endreq;
00150     return;
00151   }
00152   int event = eventHeader->eventNumber();
00153   int runNO = eventHeader->runNumber();
00154   int typFlag; //data type flag: 0:MC data,   1: 2150,      2:2200
00155   if(runNO<0) typFlag =0;
00156   else if(runNO>=0 && runNO<5459) typFlag =1;
00157   else if(runNO>=5459 && runNO<8093) typFlag =2;
00158   else if(runNO>=8093 && runNO<9815) typFlag =3;
00159   else if(runNO>=9815 ) typFlag =4;
00160   
00161   double tes;
00162   int esTimeflag = -1;
00163   SmartDataPtr<RecEsTimeCol> estimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
00164   if( ! estimeCol) {
00165           log << MSG::WARNING << "Could not find EvTimeCol" << endreq;
00166   }else{
00167           RecEsTimeCol::iterator iter_evt = estimeCol->begin();
00168           for(; iter_evt!=estimeCol->end(); iter_evt++){
00169                   tes =  (*iter_evt)->getTest();
00170                   esTimeflag = (*iter_evt)->getStat();
00171           }
00172   }   
00173   if(typFlag ==2) {if( tes>1000 ) return;}
00174   else if(typFlag ==3 ){if (tes>700 ) return;}
00175   else if(typFlag ==4 ){if (tes>1400 ) return;} 
00176   
00177 
00178   //--------------------------  use inf of MDC Track  --------------------------------// 
00179   Identifier mdcid;
00180   SmartDataPtr<RecMdcTrackCol> trkCol(eventSvc(),"/Event/Recon/RecMdcTrackCol");
00181   if (!trkCol) { 
00182      log << MSG::WARNING << "Could not find RecMdcTrackCol" << endreq;
00183      return;
00184   }
00185   //if(trkCol->size() !=2 ) return;
00186 
00187   int layid, hid, lr,localwid;
00188   double adc_raw, tdc_raw, costhe, zhit, ddl, ddr, dd, ph, sinenta, pathlength, sintheta, rphi_path;
00189   double m_driftd, driftd;
00190   log << MSG::INFO << "Begin to check RecMdcTrackCol"<<endreq; 
00191   RecMdcTrackCol::iterator iter_trk = trkCol->begin();
00192   for( ; iter_trk != trkCol->end(); iter_trk++) {
00193      HepVector a = (*iter_trk)->helix();
00194      HepSymMatrix tkErrM = (*iter_trk)->err();
00195      double m_d0E   = tkErrM[0][0];
00196      double m_phi0E = tkErrM[1][1];
00197      double m_cpaE  = tkErrM[2][2];
00198      double m_z0E   = tkErrM[3][3]; 
00199 
00200      HepPoint3D IP(0,0,0);
00201      Dedx_Helix exhel(IP, a);
00202      float m_Pt = 1.0/fabs( a(3) );
00203      float m_P = m_Pt*sqrt(1 + a(5)*a(5));
00204      //if(m_P>1.95||m_P<1.8) continue;
00205 
00206      log << MSG::DEBUG << "hitList of this  track:" << endreq;
00207      HitRefVec gothits = (*iter_trk)->getVecHits();
00208      HitRefVec::iterator it_gothit = gothits.begin();
00209      if(gothits.size()<20) StatusCode::SUCCESS;
00210       
00211      for( ; it_gothit != gothits.end(); it_gothit++) {
00212         mdcid = (*it_gothit)->getMdcId();
00213         layid =  MdcID::layer(mdcid);
00214         localwid = MdcID::wire(mdcid);
00215         adc_raw = (*it_gothit)->getAdc();
00216         //adc_raw = (*it_gothit)->getAdc()*1000000;
00217         tdc_raw = (*it_gothit)->getTdc();
00218         zhit = (*it_gothit)->getZhit();
00219         lr = (*it_gothit)->getFlagLR();
00220         if(lr == 0 || lr == 2) m_driftd = (*it_gothit)->getDriftDistLeft();
00221         if(lr == 1 ) m_driftd = (*it_gothit)->getDriftDistRight();
00222         driftd = abs(m_driftd); 
00223         dd = fabs((*it_gothit)->getDoca());
00224         sinenta = sin((*it_gothit)->getEntra());        
00225         costhe = cos(M_PI_2-atan(a[4]));
00226         sintheta = sin(M_PI_2-atan(a[4]));
00227         int ntpFlag = 1;
00228         ph = exsvc->StandardCorrec(typFlag, ntpFlag, runNO, exhel, mdcid, adc_raw, dd, sinenta, zhit, costhe );
00229         pathlength = exsvc->PathL(ntpFlag, exhel, layid, localwid, zhit);
00230         //ph = exsvc->StandardCorrec( exhel, mdcid, adc_raw, dd, sinenta, zhit, costhe ); 
00231         //pathlength = exsvc->PathLCosmic(exhel, layid, localwid, zhit,m_z0E);
00232         //lr = (*it_gothit)->getFlagLR();
00233         //if(lr == 0 || lr == 2) dd = fabs((*it_gothit)->getDriftDistLeft());
00234         //if(lr == 1 ) dd = (*it_gothit)->getDriftDistRight();
00235         rphi_path = pathlength * sintheta;
00236         //driftd>Iner_DriftDistCut
00237         //driftd>Out_DriftDistCut  
00238         if(runNO<=5911 && runNO>=5854 && layid ==14) continue;
00239         if(layid <8)
00240           {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Iner_RPhi_PathMinCut || dd>Iner_DrifDistMax) continue;}
00241         else if(layid >= 8)
00242           {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Out_RPhi_PathMinCut || dd>Out_DrifDistMax) continue;}
00243      
00244         
00245         for(int kk=0; kk<NumBinDrifDist; kk++) {
00246           if(layid<8) 
00247            { 
00248             if((dd>(Iner_step*kk+Iner_DrifDistMin))&&(dd<(Iner_step*(kk+1)+Iner_DrifDistMin))) hid=layid*NumBinDrifDist+kk;
00249            } 
00250          if(layid>=8)
00251           { 
00252             if((dd>(Out_step*kk+Out_DrifDistMin))&&(dd<(Out_step*(kk+1)+Out_DrifDistMin)))  hid=layid*NumBinDrifDist+kk;
00253            }
00254          } 
00255         m_hist[hid]->Fill(ph);                                 
00256       }
00257     }
00258 }

void DedxCalibDriftDist::FillHistsFromTree  )  [virtual]
 

Implements DedxCalib.

void DedxCalibDriftDist::FillHistsFromTree  )  [virtual]
 

Implements DedxCalib.

00368 {
00369   log<<MSG::INFO<<"DedxCalibDriftDist::FillHistsFromTree( )..."<<endreq;  
00370 }

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 DedxCalibDriftDist::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 DedxCalibDriftDist::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.

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

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 DedxCalibDriftDist::WriteCalibdEdxParameters  )  [virtual]
 

Reimplemented from DedxCalib.

void DedxCalibDriftDist::WriteCalibdEdxParameters  )  [virtual]
 

Reimplemented from DedxCalib.

00373 {  
00374   log<<MSG::INFO<<"DedxCalibDriftDist::WriteCalibdEdxParameters( )..."<<endreq;
00375 }

void DedxCalibDriftDist::WriteHists  )  [virtual]
 

Implements DedxCalib.

void DedxCalibDriftDist::WriteHists  )  [virtual]
 

Implements DedxCalib.

00043 {
00044   log<<MSG::INFO<<"DedxCalibDriftDist::WriteHists( )..."<<endreq;
00045   double mean[4][43];
00046   for(int lay=0; lay<43; lay++) {
00047     if(m_par_flag==0) {
00048       mean[0][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(0); 
00049       mean[1][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(1); 
00050       mean[2][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(2); 
00051       mean[3][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(3); 
00052     }
00053     if(m_par_flag==1) {
00054       mean[0][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(0); 
00055       mean[1][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(1); 
00056       mean[2][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(2); 
00057       mean[3][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(3); 
00058     }
00059   }
00060 
00061   if(m_rootfile=="no rootfile") 
00062   {
00063      log << MSG::ERROR<<"no sepcified calibration file path of docacalib "<<endreq;
00064      //return StatusCode::FAILURE;
00065      return;
00066   } 
00067   //std::cout<<"m_rootfile = "<<m_rootfile<<endl;
00068   std::string rootpath_doca = m_rootfile;
00069   std::string hlabel_rootpath_doca;
00070   std::ostringstream strout;
00071   strout << rootpath_doca <<"/ddgcalib.root";
00072   hlabel_rootpath_doca = strout.str();
00073   std::cout<<"string doca :    "<<hlabel_rootpath_doca.c_str()<<endl;
00074  
00075   TFile fhist(hlabel_rootpath_doca.c_str(), "recreate");
00076   TTree* ddg = new TTree("ddgcalib", "ddgcalib");
00077   ddg -> Branch("ddg0", &mean[0], "ddg[43]/D");
00078   ddg -> Branch("ddg1", &mean[1], "ddg[43]/D");
00079   ddg -> Branch("ddg2", &mean[2], "ddg[43]/D");
00080   ddg -> Branch("ddg3", &mean[3], "ddg[43]/D");
00081   ddg -> Fill();
00082   ddg -> Write();
00083   m_list -> Write();
00084   m_caliblist -> Write();
00085   fhist.Close();        
00086   for(int i=0; i<43*NumBinDrifDist; i++) delete m_hist[i];
00087   for(int i=0; i<43; i++) delete m_histcalib[i];
00088   delete m_list;
00089   delete m_caliblist;
00090   //delete ddg;
00091   delete m_rand;             
00092 }


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* DedxCalibDriftDist::m_caliblist [private]
 

TObjArray* DedxCalibDriftDist::m_caliblist [private]
 

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

int DedxCalib::m_correc_flag [protected, inherited]
 

vector<TH1F*> DedxCalibDriftDist::m_hist [private]
 

vector<TH1F*> DedxCalibDriftDist::m_hist [private]
 

vector<TH1F*> DedxCalibDriftDist::m_histcalib [private]
 

vector<TH1F*> DedxCalibDriftDist::m_histcalib [private]
 

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

TObjArray* DedxCalibDriftDist::m_list [private]
 

TObjArray* DedxCalibDriftDist::m_list [private]
 

int DedxCalib::m_par_flag [protected, inherited]
 

int DedxCalib::m_phshape_flag [protected, inherited]
 

TRandom* DedxCalibDriftDist::m_rand [private]
 

TRandom* DedxCalibDriftDist::m_rand [private]
 

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

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:11 2011 for BOSS6.5.5 by  doxygen 1.3.9.1