fOutputPID->Add(hTOFsigPid3sigPion);
fOutputPID->Add(hTOFsigPid3sigKaon);
fOutputPID->Add(hTOFsigPid3sigProton);
- fOutputPID->Add(hTPCsigvsp);
+ fOutputPID->Add(hTPCsigvsp);
fOutputPID->Add(hTPCsigvspAC);
fOutputPID->Add(hTPCsigmaK);
fOutputPID->Add(hTPCsigmaPion);
fOutputCheckCentrality->Add(hNtrackletsOut);
fOutputCheckCentrality->Add(hMultIn);
fOutputCheckCentrality->Add(hMultOut);
+
+ PostData(6,fOutputCheckCentrality);
+
} else{
hname="hNtracklets";
TH1F* hNtracklets=new TH1F(hname.Data(),"Number of tracklets;ntracklets;Entries",5000,-0.5,4999.5);
PostData(3,fOutputTrack);
PostData(4,fCuts);
PostData(5,fOutputCounters);
- PostData(6,fOutputCheckCentrality);
}
//___________________________________________________________________________
PostData(3,fOutputTrack);
PostData(4,fCuts);
PostData(5,fOutputCounters);
- PostData(6,fOutputCheckCentrality);
+ if(fCuts->GetUseCentrality()) PostData(6,fOutputCheckCentrality);
TClonesArray *arrayProng =0;
Int_t pdg=0;
if(!aod) {delete [] pdgdaughters;return;}
// fix for temporary bug in ESDfilter
// the AODs with null vertex pointer didn't pass the PhysSel
- if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001) { delete [] pdgdaughters;return;}
+ if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001) return;
// count event
fNEntries->Fill(0);
TString trigclass=aod->GetFiredTriggerClasses();
if(trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD") || trigclass.Contains("C0SMH-B-NOPF-ALL")) fNEntries->Fill(5);
-
+ Bool_t evSelbyCentrality=kTRUE,evSelected=kTRUE;
//select event
if(!fCuts->IsEventSelected(aod)) {
- // rejected for pileup
- if(fCuts->GetWhyRejection()==1) fNEntries->Fill(1);
- delete [] pdgdaughters;
- return;
+ evSelected=kFALSE;
+ if(fCuts->GetWhyRejection()==1) fNEntries->Fill(1); // rejected for pileup
+ if(fCuts->GetWhyRejection()==2) evSelbyCentrality=kFALSE; //rejected by centrality
}
+ if(evSelected || (!evSelected && !evSelbyCentrality)){ //events selected or not selected because of vtx
+ if(fCuts->GetUseCentrality()){
+ Int_t runNumber = aod->GetRunNumber();
+ Int_t stdCent = (Int_t)(fCuts->GetCentrality(aod)+0.5);
+ Int_t secondCent = (Int_t)(fCuts->GetCentrality(aod,fEstimator)+0.5);
+ Int_t mincent=stdCent-stdCent%10;
+ ((AliCounterCollection*)fOutputCounters->FindObject("stdEstimator"))->Count(Form("centralityclass:%d_%d/Run:%d",mincent,mincent+10,runNumber));
+ mincent=secondCent-secondCent%10;
+ ((AliCounterCollection*)fOutputCounters->FindObject("secondEstimator"))->Count(Form("centralityclass:%d_%d/Run:%d",mincent,mincent+10,runNumber));
+
+ if(stdCent<fCuts->GetMinCentrality() || stdCent>fCuts->GetMaxCentrality()){
+ ((TH1F*)fOutputCheckCentrality->FindObject("hNtrackletsOut"))->Fill(aod->GetTracklets()->GetNumberOfTracklets());
+ ((TH1F*)fOutputCheckCentrality->FindObject("hMultOut"))->Fill(aod->GetHeader()->GetRefMultiplicity());
+ }else{
+ ((TH1F*)fOutputCheckCentrality->FindObject("hNtrackletsIn"))->Fill(aod->GetTracklets()->GetNumberOfTracklets());
+ ((TH1F*)fOutputCheckCentrality->FindObject("hMultIn"))->Fill(aod->GetHeader()->GetRefMultiplicity());
+ }
- if(fCuts->GetUseCentrality()){
- Int_t runNumber = aod->GetRunNumber();
- Int_t stdCent = (Int_t)(fCuts->GetCentrality(aod)+0.5);
- Int_t secondCent = (Int_t)(fCuts->GetCentrality(aod,fEstimator)+0.5);
- Int_t mincent=stdCent-stdCent%10;
- ((AliCounterCollection*)fOutputCounters->FindObject("stdEstimator"))->Count(Form("centralityclass:%d_%d/Run:%d",mincent,mincent+10,runNumber));
- mincent=secondCent-secondCent%10;
- ((AliCounterCollection*)fOutputCounters->FindObject("secondEstimator"))->Count(Form("centralityclass:%d_%d/Run:%d",mincent,mincent+10,runNumber));
-
- if(stdCent<fCuts->GetMinCentrality() || stdCent>fCuts->GetMaxCentrality()){
- ((TH1F*)fOutputCheckCentrality->FindObject("hNtrackletsOut"))->Fill(aod->GetTracklets()->GetNumberOfTracklets());
- ((TH1F*)fOutputCheckCentrality->FindObject("hMultOut"))->Fill(aod->GetHeader()->GetRefMultiplicity());
- }else{
- ((TH1F*)fOutputCheckCentrality->FindObject("hNtrackletsIn"))->Fill(aod->GetTracklets()->GetNumberOfTracklets());
- ((TH1F*)fOutputCheckCentrality->FindObject("hMultIn"))->Fill(aod->GetHeader()->GetRefMultiplicity());
+ PostData(6,fOutputCheckCentrality);
+
+ } else{
+ ((TH1F*)fOutputTrack->FindObject("hNtracklets"))->Fill(aod->GetTracklets()->GetNumberOfTracklets());
+ ((TH1F*)fOutputTrack->FindObject("hMult"))->Fill(aod->GetHeader()->GetRefMultiplicity());
}
- } else{
- ((TH1F*)fOutputTrack->FindObject("hNtracklets"))->Fill(aod->GetTracklets()->GetNumberOfTracklets());
- ((TH1F*)fOutputTrack->FindObject("hMult"))->Fill(aod->GetHeader()->GetRefMultiplicity());
+ }
+
+ if(!evSelected) {
+ delete [] pdgdaughters;
+ return; //discard all events not selected (vtx and/or centrality)
}
Int_t ntracks=0;
//if (pidHF->IsKaonRaw(track, "TOF"))
((TH2F*)fOutputPID->FindObject("hTPCsigmaK"))->Fill(TPCp,tpcres->GetNumberOfSigmas(TPCp,TPCsignal,track->GetTPCNcls(),AliPID::kKaon));
//if (pidHF->IsPionRaw(track, "TOF"))
- ((TH2F*)fOutputPID->FindObject("hTPCsigmaPion"))->Fill(TPCp,tpcres->GetNumberOfSigmas(TPCp,TPCsignal,track->GetTPCNcls(),AliPID::kPion));
+ ((TH2F*)fOutputPID->FindObject("hTPCsigmaPion"))->Fill(TPCp,tpcres->GetNumberOfSigmas(TPCp,TPCsignal,track->GetTPCNcls(),AliPID::kPion));
//if (pidHF->IsProtonRaw(track,"TOF"))
((TH2F*)fOutputPID->FindObject("hTPCsigmaProton"))->Fill(TPCp,tpcres->GetNumberOfSigmas(TPCp,TPCsignal,track->GetTPCNcls(),AliPID::kProton));
delete tpcres;
PostData(3,fOutputTrack);
PostData(4,fCuts);
PostData(5,fOutputCounters);
- PostData(6,fOutputCheckCentrality);
+ //Post data 6 done in case of centrality on
+
}
//____________________________________________________________________________
cutsobjname="AnalysisCuts";
if(stdcuts) {
analysiscuts = new AliRDHFCutsDplustoKpipi();
- analysiscuts->SetStandardCutsPbPb2010();
+ analysiscuts->SetStandardCutsPP2010();
}
else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
suffix="Dplus";
cutsobjname="D0toKpiCuts";
if(stdcuts) {
analysiscuts = new AliRDHFCutsD0toKpi();
- analysiscuts->SetStandardCutsPbPb2010();
+ analysiscuts->SetStandardCutsPP2010();
}
else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
suffix="D0";
#include <TLegend.h>
#include <TPaveText.h>
#include <TStyle.h>
+#include <TClass.h>
+#include <AliCounterCollection.h>
//read the file and take list and stat
hstat->Draw("htext0");
cst->SaveAs(Form("%s%s.png",hstat->GetName(),textleg.Data()));
- /*
- TCanvas* citscls=new TCanvas("citscls","ITS clusters");
- citscls->SetGridy();
- TCanvas* cspdcls=new TCanvas("cspdcls","SPD clusters");
- cspdcls->SetGridy();
- TCanvas* cngoodtr=new TCanvas("cngoodtr","Good tracks per event");
- TCanvas* cptgoodtr=new TCanvas("cptgoodtr","Pt distribution good tracks");
- TCanvas* cd0=new TCanvas("cd0","Impact parameter distribution (track selected)");
-
-
-
- TString hname="hnClsITS";
- TH1F* hnClsITS=(TH1F*)list->FindObject(hname);
- if(!hnClsITS){
- cout<<hname<<" not found"<<endl;
- }else{
- citscls->cd();
- hnClsITS->Draw();
- citscls->SaveAs(Form("%s%s.png",hname.Data(),textleg.Data()));
- }
- hname="hnClsSPD";
- TH1F* hnClsSPD=(TH1F*)list->FindObject(hname);
- if(!hnClsSPD){
- cout<<hname<<" not found"<<endl;
- }else{
- cspdcls->cd();
- hnClsSPD->Draw();
- cspdcls->SaveAs(Form("%s%s.png",hname.Data(),textleg.Data()));
- }
+}
- hname="hdistrGoodTr";
- TH1F* hngoodtr=(TH1F*)list->FindObject(hname);
- if(!hngoodtr){
- cout<<hname<<" not found"<<endl;
- }else{
- cngoodtr->cd();
- hngoodtr->Draw();
- cngoodtr->SaveAs(Form("%s%s.png",hname.Data(),textleg.Data()));
- }
+//draw "pid related" histograms (list "outputPID")
+void DrawOutputPID(TString partname="D0",TString textleg="",TString path="./"){
+ gStyle->SetCanvasColor(0);
+ gStyle->SetTitleFillColor(0);
+ gStyle->SetStatColor(0);
+ gStyle->SetPalette(1);
+
+ TString listname="outputPid";
+
+ TList* list;
+ TH1F * hstat;
- hname="hptGoodTr";
- TH1F* hptgoodtr=(TH1F*)list->FindObject(hname);
- if(!hptgoodtr){
- cout<<hname<<" not found"<<endl;
- }else{
- cptgoodtr->cd();
- hptgoodtr->Draw();
- cptgoodtr->SaveAs(Form("%s%s.png",hname.Data(),textleg.Data()));
+ Bool_t isRead=ReadFile(list,hstat,listname,partname,path);
+ if(!isRead) return;
+ if(!list || !hstat){
+ cout<<":-( null pointers..."<<endl;
+ return;
}
- hname="hd0";
- TH1F* hd0=(TH1F*)list->FindObject(hname);
- if(!hd0){
- cout<<hname<<" not found"<<endl;
- }else{
- cd0->cd();
- hd0->Draw();
- cd0->SaveAs(Form("%s%s.png",hname.Data(),textleg.Data()));
+ for(Int_t i=0;i<list->GetEntries();i++){
+ TClass* objtype=list->At(i)->IsA();
+ TString tpname=objtype->GetName();
+
+ if(tpname=="TH1F"){
+ TH1F* h=(TH1F*)list->At(i);
+
+ if(!h){
+ cout<<"Histogram "<<i<<" not found"<<endl;
+ continue;
+ }
+ //h->Scale(1./h->Integral("width"));
+ TCanvas* c=new TCanvas(Form("c%s",h->GetName()),h->GetName());
+ c->SetLogz();
+ c->cd();
+ h->Draw();
+
+ //write
+ c->SaveAs(Form("%s.png",h->GetName()));
+ TFile* fout=new TFile(Form("%s.root",h->GetName()),"recreate");
+ fout->cd();
+ c->Write();
+ }
+
+ if(tpname=="TH2F"){
+ TH2F* h=(TH2F*)list->At(i);
+
+ if(!h){
+ cout<<"Histogram "<<i<<" not found"<<endl;
+ continue;
+ }
+ h->Scale(1./h->Integral("width"));
+ TCanvas* c=new TCanvas(Form("c%s",h->GetName()),h->GetName());
+ c->SetLogz();
+ c->cd();
+
+ h->Draw("colz");
+ //write
+ c->SaveAs(Form("%s.png",h->GetName()));
+ TFile* fout=new TFile(Form("%s.root",h->GetName()),"recreate");
+ fout->cd();
+ c->Write();
+ }
}
- */
}
-//draw "pid related" histograms (list "outputPID")
-void DrawOutputPID(TString partname="D0",TString textleg="",TString path="./"){
+void DrawOutputCentrality(TString partname="D0",TString textleg="",TString path="./"){
gStyle->SetCanvasColor(0);
gStyle->SetTitleFillColor(0);
gStyle->SetStatColor(0);
gStyle->SetPalette(1);
- TString listname="outputPid";
+ TString listname="outputCentrCheck";
TList* list;
TH1F * hstat;
cout<<":-( null pointers..."<<endl;
return;
}
-
+
for(Int_t i=0;i<list->GetEntries();i++){
TH1F* h=(TH1F*)list->At(i);
if(!h){
}
TCanvas* c=new TCanvas(Form("c%s",h->GetName()),h->GetName());
c->cd();
- if(i<3)h->Draw();
- else h->Draw("colz");
+ c->SetGrid();
+ h->Draw();
+ c->SaveAs(Form("%s%s.png",c->GetName(),textleg.Data()));
+ }
+
+ TCanvas* cst=new TCanvas("cst","Stat");
+ cst->SetGridy();
+ cst->cd();
+ hstat->Draw("htext0");
+ cst->SaveAs(Form("%s%s.png",hstat->GetName(),textleg.Data()));
+
+ listname="countersCentrality";
+
+ isRead=ReadFile(list,hstat,listname,partname,path);
+ if(!isRead) return;
+ if(!list || !hstat){
+ cout<<":-( null pointers..."<<endl;
+ return;
+ }
+ for(Int_t i=0;i<list->GetEntries();i++){
+ AliCounterCollection* coll=(AliCounterCollection*)list->At(i);
+
+ coll->SortRubric("run");//sort by run number
+ //coll->PrintKeyWords();
+ Int_t ncentr=10;//check this
+ TH1F* h020=0x0;
+ TH1F* h2080=0x0;
+ TCanvas *ccent=new TCanvas(Form("ccent%s",coll->GetName()),Form("Centrality vs Run (%s)",coll->GetName()),1400,800);
+ ccent->Divide(5,3);
+
+ for(Int_t ic=0;ic<ncentr;ic++){
+
+ TH1F* h=(TH1F*)coll->Get("run",Form("centralityclass:%d_%d",ic*10,ic*10+10));
+ h->SetName(Form("h%d%d",i,ic));
+ if(ic>=0 && ic<=1){ //0-20
+ if(!h020) {
+ h020=(TH1F*)h->Clone(Form("h020%s",coll->GetName()));
+ h020->SetTitle(Form("Centrality 0-20 %s",coll->GetName()));
+ }
+ else h020->Add(h);
+ }
+ if(ic>=2 && ic<=7){ //20-80
+ if(!h2080) {
+ h2080=(TH1F*)h->Clone(Form("h2080%s",coll->GetName()));
+ h2080->SetTitle(Form("Centrality 20-80 %s",coll->GetName()));
+ }
+ else h2080->Add(h);
+ }
+
+ ccent->cd(ic+1);
+ h->DrawClone();
+ // ccent->cd(1);
+ // h->SetLineColor(ic+1);
+ // if(ic==0)h->DrawClone();
+ // else h->DrawClone("sames");
+ }
+
+ ccent->cd(ncentr+1);
+ h020->DrawClone();
+
+ ccent->cd(ncentr+2);
+ h2080->DrawClone();
+
+ ccent->SaveAs(Form("%s%s.png",ccent->GetName(),textleg.Data()));
}
}