//-----------------------------------------------------ROOT includes------------------------------------------------------------ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //------------------------------------------------CentralityCalibration Function------------------------------------------------- vector CentralityCalibration(TList* List) { TH1F *VZeroMB = (TH1F*) List->FindObject("hV0MB"); TF1* FitFonction = new TF1 ("FitFonction","pol7",0,100e3); VZeroMB->Fit(FitFonction,"N","",0,100e3); double PartialInt = 0; vector CentralityCoeff(102,0); int i=0; int BinMax = VZeroMB->FindBin(FitFonction->GetX(0)); double IntegWidth=VZeroMB->Integral(0,BinMax,"width"); CentralityCoeff[0]=BinMax; for(double j=0;j<101;j++) { while(!PartialInt == IntegWidth*j/100. || PartialInt < IntegWidth*j/100.) { i++; PartialInt=VZeroMB->Integral(BinMax-i,BinMax,"width"); } CentralityCoeff[j+1]=(BinMax-i)*20; } return CentralityCoeff; } //------------------------------------------------------GetCentrality Function------------------------------------------------- int GetCentrality(double V0Signal, vector CentralityCoeff) { int Centrality=0; while(!(V0Signal > CentralityCoeff[Centrality+1] && V0Signal < CentralityCoeff[Centrality])) { Centrality++; } return Centrality; } //--------------------------------------------------CentralityAnalysis Function------------------------------------------------ void CentralityAnalysis() { //-------------------------------------------------------Variable declaration--------------------------------------------------- int VectorSize(0); vector TFileList; vector TListList; vector XAxisLabels; vector CentralityCoeff(102,0); //---------------------------------------------------------Loading Files-------------------------------------------------------- ifstream ListFlux("ListeRunsPb.txt"); if(ListFlux) { ListFlux.seekg(0, ios::end); int FileSize = ListFlux.tellg(); ListFlux.seekg(0, ios::beg); int CursPos; string TempName; do { getline(ListFlux,TempName); if (!TFile(TempName.c_str(),"read").IsZombie()) { TFileList.push_back(new TFile(TempName.c_str(),"read")); XAxisLabels.push_back(TempName.substr(TempName.size()-11,6)); } CursPos=ListFlux.tellg(); } while(CursPosDivide(2,1); gStyle->SetOptStat(""); //---------------------------------------------Definition of all the histos------------------------------------------------------ TH2F *hQAL1GV0Trig = new TH2F("hQAL1GV0Trig","Centrality distribution for L1G triggered events",VectorSize,0,VectorSize,100,0,100); TH2F *hQAL1JV0Trig = new TH2F("hQAL1JV0Trig","Centrality distribution for L1J triggered events",VectorSize,0,VectorSize,100,0,100); for(int run=0;runGet("EMCALQATrigger")); CentralityCoeff=CentralityCalibration(TListList[run]); //-----------------------------------------------------Filling XAxisLabels------------------------------------------------------ hQAL1GV0Trig->GetXaxis()->SetBinLabel(run+1,XAxisLabels[run].c_str()); hQAL1JV0Trig->GetXaxis()->SetBinLabel(run+1,XAxisLabels[run].c_str()); //---------------------------------------Centrality distribution for L1G triggered events---------------------------------------- TH1F *VZeroL1G = (TH1F*) TListList[run]->FindObject("hV0L1G"); double IntL1G=0; for(int i=1;iGetBinContent(i); } for(int i=1;iSetBinContent(run+1,GetCentrality(VZeroL1G->GetBinCenter(i),CentralityCoeff),VZeroL1G->GetBinContent(i)/IntL1G); } //---------------------------------------Centrality distribution for L1J triggered events---------------------------------------- TH1F *VZeroL1J = (TH1F*) TListList[run]->FindObject("hV0L1J"); double IntL1J=0; for(int i=1;iGetBinContent(i); } for(int i=1;iSetBinContent(run+1,GetCentrality(VZeroL1J->GetBinCenter(i),CentralityCoeff),VZeroL1J->GetBinContent(i)/IntL1J); } } //----------------------------------------------------------Drawing Histos----------------------------------------------------- //--------------------------------------------c1------------------------------------------- //------------------1------------------ MainCanvas->cd(1); hQAL1GV0Trig ->SetYTitle("Centrality of L1G triggered events"); hQAL1GV0Trig ->SetXTitle("Run #"); hQAL1GV0Trig->GetYaxis()->SetTitleSize(hQAL1GV0Trig->GetYaxis()->GetTitleSize()*1.4); hQAL1GV0Trig->Draw("colz"); //------------------2------------------ MainCanvas->cd(2); hQAL1JV0Trig ->SetYTitle("Centrality of L1J triggered events"); hQAL1JV0Trig ->SetXTitle("Run #"); hQAL1JV0Trig->GetYaxis()->SetTitleSize(hQAL1JV0Trig->GetYaxis()->GetTitleSize()*1.4); hQAL1JV0Trig->Draw("colz"); }