#include <TChain.h>
#include <TBenchmark.h>
#include <TFile.h> //docosmic()
-#include <fstream> //caf()
-#include <TProof.h> //caf()
#include <AliSelector.h> //base class
#include <AliESD.h>
#include <AliBitPacking.h> //HmpidPayload()
class AliHMPIDSelector : public AliSelector {
public :
- AliHMPIDSelector():AliSelector(),fChain(0),fEsd(0),fCkovP(0),fMipXY(0),fDifXY(0),fSigP(0) {for(Int_t i=0;i<5;i++) fProb[i]=0;}
+ AliHMPIDSelector():AliSelector(),fChain(0),fEsd(0),fCkovP(0),fMipXY(0),fDifX(0),fSigP(0) {for(Int_t i=0;i<5;i++) fProb[i]=0;}
virtual ~AliHMPIDSelector() {delete fEsd;}
TTree *fChain ; //!pointer to the analyzed TTree or TChain
AliESD *fEsd ; //!
- TH2F *fCkovP,*fMipXY,*fDifXY,*fSigP; //!
+ TH2F *fCkovP,*fMipXY; //!
+ TH1F *fDifX; //!
+ TH2F *fSigP; //!
TH1F *fProb[5]; //!
ClassDef(AliHMPIDSelector,0);
TString option = GetOption();
// create histograms on each slave server
- fCkovP = new TH2F("CkovP" , "#theta_{c}, [rad];P, [GeV]", 150, 0, 7 ,100, -3, 1);
+ fCkovP = new TH2F("CkovP" , "#theta_{c}, [rad];P, [GeV]", 150, 0, 7 ,500, 0, 1);
fSigP = new TH2F("SigP" ,"#sigma_{#theta_c}" , 150, 0, 7 ,100, 0, 1e20);
fMipXY = new TH2F("MipXY" ,"mip position" , 260, 0,130 ,252,0,126);
- fDifXY = new TH2F("DifXY" ,"diff" , 260, -10, 10 ,252,-10,10);
+ fDifX = new TH1F("DifX" ,"diff" , 200, -5, 5);
fProb[0] = new TH1F("PidE" ,"PID: e yellow #mu magenta" ,100,0,1); fProb[0]->SetLineColor(kYellow);
fProb[1] = new TH1F("PidMu","pid of #mu" ,100,0,1); fProb[1]->SetLineColor(kMagenta);
fSigP ->Fill(pTrk->GetP(),TMath::Sqrt(pTrk->GetHMPIDchi2()));
Float_t xm,ym; Int_t q,np; pTrk->GetHMPIDmip(xm,ym,q,np); fMipXY->Fill(xm,ym); //mip info
- Float_t xd,yd,th,ph; pTrk->GetHMPIDtrk(xd,yd,th,ph); fDifXY->Fill(xd,yd); //track info
+ Float_t xd,yd,th,ph; pTrk->GetHMPIDtrk(xd,yd,th,ph); fDifX->Fill(xd-xm); //track info
Double_t pid[5]; pTrk->GetHMPIDpid(pid); for(Int_t i =0;i<5;i++) fProb[i]->Fill(pid[i]);
}//tracks loop
fOutput->Add(fCkovP);
fOutput->Add(fSigP);
fOutput->Add(fMipXY);
- fOutput->Add(fDifXY);
+ fOutput->Add(fDifX);
for(Int_t i=0;i<5;i++) fOutput->Add(fProb[i]);
}//SlaveTerminate()
fCkovP = dynamic_cast<TH2F*>(fOutput->FindObject("CkovP")) ;
fSigP = dynamic_cast<TH2F*>(fOutput->FindObject("SigP")) ;
fMipXY = dynamic_cast<TH2F*>(fOutput->FindObject("MipXY")) ;
- fDifXY = dynamic_cast<TH2F*>(fOutput->FindObject("DifXY")) ;
+ fDifX = dynamic_cast<TH1F*>(fOutput->FindObject("DifX")) ;
fProb[0] = dynamic_cast<TH1F*>(fOutput->FindObject("PidE")) ;
fProb[1] = dynamic_cast<TH1F*>(fOutput->FindObject("PidMu")) ;
TF1 *pP=(TF1*)pPi->Clone(); pP ->SetLineColor(kBlue); pP ->SetParameter(0,AliPID::ParticleMass(AliPID::kProton));
TCanvas *pC=new TCanvas("c1","ESD QA");pC->SetFillColor(10); pC->SetHighLightColor(10); pC->Divide(3,2);
- pC->cd(1); fCkovP->Draw(); pPi->Draw("same"); pK->Draw("same"); pP->Draw("same"); pC->cd(2); fMipXY->Draw(); pC->cd(3); fProb[0]->Draw(); fProb[1]->Draw("same");
- pC->cd(4); fSigP ->Draw(); pC->cd(5); fDifXY->Draw(); pC->cd(6); fProb[2]->Draw(); fProb[3]->Draw("same"); fProb[4]->Draw("same");
+ pC->cd(1); fCkovP->Draw(); pPi->Draw("same"); pK->Draw("same"); pP->Draw("same"); pC->cd(2); fMipXY->Draw(); pC->cd(3); fProb[0]->Draw(); fProb[1]->Draw("same");
+ pC->cd(4); fSigP ->Draw(); pC->cd(5); fDifX->Draw(); pC->cd(6); fProb[2]->Draw(); fProb[3]->Draw("same"); fProb[4]->Draw("same");
}//Terminate()
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void loc()
pChain->Process("AliHMPIDSelector.C+");
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void caf()
-{
- gBenchmark->Start("PRooF exec");
- TChain* pChain =new TChain("esdTree");
-
- ifstream list; list.open("list.txt");
-
- TString file;
- while(list.good()) {
- list>>file;
- if (!file.Contains("root")) continue; //it's wrong file name
- pChain->Add(file.Data());
- }
- list.close();
-
- pChain->GetListOfFiles()->Print();
-
- TProof *pProof=TProof::Open("kir@lxb6046.cern.ch");
- pProof->UploadPackage("ESD.par");
- pProof->EnablePackage("ESD");
-
- pChain->SetProof(pProof);
- pChain->Process("AliHMPIDSelector.C+");
-
- gBenchmark->Show("PRooF exec");
-}
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Int_t DateHeader(ifstream *pFile,Bool_t isPrint=0)
{
Int_t iSize=-1;
TCanvas *pAll=0;
AliRunLoader *gAL=0; AliLoader *gHL=0; AliESD *gEsd=0; TTree *gEsdTr=0; AliHMPID *gH=0;
Int_t gEvt=0; Int_t gMaxEvt=0;
+TObjArray *pNmean;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void Hdisp()
{//display events from files if any in current directory or simulated events
pAll=new TCanvas("all","",1300,900); pAll->Divide(3,3,0,0);
// pAll->ToggleEditor();
pAll->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",0,"","DoZoom(Int_t,Int_t,Int_t,TObject*)");
-
+
+ OpenCalib();
if(gSystem->IsFileInIncludePath("galice.root")){// tries to open session
if(gAlice) delete gAlice; //in case we execute this in aliroot delete default AliRun object
gAL=AliRunLoader::Open(); //try to open galice.root from current dir
AliHMPIDv1::Hit2Sdi(&hits,&sdig);
AliHMPIDDigitizer::Sdi2Dig(&sdig,&digs);
AliHMPIDReconstructor::Dig2Clu(&digs,&clus);
- AliHMPIDTracker::Recon(&esd,&clus,OpenCalib());
+ AliHMPIDTracker::Recon(&esd,&clus,pNmean);
pAll->cd(3); gPad->Clear(); TLatex txt;txt.DrawLatex(0.2,0.2,Form("Simulated event %i",gEvt));
DrawEvt(&hits,&digs,&clus,&esd);
Printf("totally %i clusters for event %i",iCluCnt,gEvt);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-TObjArray* OpenCalib()
+void OpenCalib()
{
AliCDBManager* pCDB = AliCDBManager::Instance();
pCDB->SetDefaultStorage("local://$HOME");
if(!pQthreEnt || ! pNmeanEnt) return;
- TObjArray *pNmean=(TObjArray*)pNmeanEnt->GetObject();
- TObjArray *pQthre=(TObjArray*)pQthreEnt->GetObject();
- return pNmean;
+ pNmean=(TObjArray*)pNmeanEnt->GetObject();
}