/*\r
\r
// after running comparison task, read the file, and get component\r
- gSystem->Load("libPWG1.so");\r
+ gROOT->LoadMacro("$ALICE_ROOT/PWG1/Macros/LoadMyLibs.C");\r
+ LoadMyLibs();\r
TFile f("Output.root");\r
AliComparisonEff * compObj = (AliComparisonEff*)f.Get("AliComparisonEff");\r
\r
- // analyse comparison data\r
+ // Analyse comparison data\r
compObj->Analyse();\r
\r
// the output histograms/graphs will be stored in the folder "folderEff" \r
fTPCPtDCAXYPid[i]=0; \r
fTPCPtDCAZPid[i]=0; \r
}\r
+\r
Init();\r
}\r
\r
\r
// systematics\r
const Double_t kSigma2Full_xy = 0.25; // ExB full systematics [cm]\r
- const Double_t kSigma2Full_z = 5.0; // [cm] \r
+ const Double_t kSigma2Full_z = 5.0; // drift velocity (goofie) [cm] \r
\r
const Double_t kSigma2Day0_xy = 0.02; // ExB [cm]\r
- const Double_t kSigma2Day0_z = 0.1; // [cm] goofie \r
+ const Double_t kSigma2Day0_z = 0.1; // drift velocity (goofie) [cm] \r
\r
// \r
Double_t DCASigmaIdeal=0;\r
TH1::AddDirectory(kFALSE);\r
\r
AliComparisonEff * comp=this;\r
- TFolder *folder = comp->GetAnalysisFolder();\r
-\r
- // recreate folder every time\r
- if(folder) delete folder;\r
- folder = CreateFolder("folderEff","Analysis Eff Folder");\r
- folder->SetOwner();\r
+ TObjArray *aFolderObj = new TObjArray;\r
\r
// calculate efficiency and contamination (4 sigma) \r
TH1 *h_sigmaidealpid[20];\r
h_sigmaday0pidtot[3]->Divide(h_sigmaday0pidtot[2]);\r
\r
// calculate efficiency pid wise\r
- for(Int_t idx = 0; idx<5; idx++)\r
+ for(Int_t jdx = 0; jdx<5; jdx++)\r
{\r
- h_sigmaidealpid[idx]->Sumw2();\r
- h_sigmaidealpid[idx+5]->Divide(h_sigmaidealpid[idx]);\r
+ h_sigmaidealpid[jdx]->Sumw2();\r
+ h_sigmaidealpid[jdx+5]->Divide(h_sigmaidealpid[jdx]);\r
\r
- h_sigmafullpid[idx]->Sumw2();\r
- h_sigmafullpid[idx+5]->Divide(h_sigmafullpid[idx]);\r
+ h_sigmafullpid[jdx]->Sumw2();\r
+ h_sigmafullpid[jdx+5]->Divide(h_sigmafullpid[jdx]);\r
\r
- h_sigmaday0pid[idx]->Sumw2();\r
- h_sigmaday0pid[idx+5]->Divide(h_sigmaday0pid[idx]);\r
+ h_sigmaday0pid[jdx]->Sumw2();\r
+ h_sigmaday0pid[jdx+5]->Divide(h_sigmaday0pid[jdx]);\r
}\r
\r
// calculate cont. pid wise\r
- for(Int_t idx = 0; idx<5; idx++)\r
+ for(Int_t jdx = 0; jdx<5; jdx++)\r
{\r
- h_sigmaidealpid[idx+15]->Divide(h_sigmaidealpidtot[2]);\r
- h_sigmafullpid[idx+15]->Divide(h_sigmafullpidtot[2]);\r
- h_sigmaday0pid[idx+15]->Divide(h_sigmaday0pidtot[2]);\r
+ h_sigmaidealpid[jdx+15]->Divide(h_sigmaidealpidtot[2]);\r
+ h_sigmafullpid[jdx+15]->Divide(h_sigmafullpidtot[2]);\r
+ h_sigmaday0pid[jdx+15]->Divide(h_sigmaday0pidtot[2]);\r
}\r
\r
TCanvas * c = new TCanvas("Efficiency","Track efficiency");\r
c->cd();\r
+ c->Divide(1,2);\r
\r
//\r
+ c->cd(1);\r
comp->fEffTPCTanF->SetXTitle("Tan(#theta)");\r
comp->fEffTPCTanF->SetYTitle("eff_{findable}");\r
comp->fEffTPCTanF->SetName("EffTanFindable");\r
+ comp->fEffTPCTanF->Draw();\r
//\r
+ c->cd(2);\r
comp->fEffTPCTan->SetXTitle("Tan(#theta)");\r
comp->fEffTPCTan->SetYTitle("eff_{all}");\r
comp->fEffTPCTan->SetName("EffTanAll");\r
+ comp->fEffTPCTan->Draw();\r
\r
- if(folder) folder->Add(comp->fEffTPCTanF);\r
- if(folder) folder->Add(comp->fEffTPCTan);\r
+ aFolderObj->Add(comp->fEffTPCTanF);\r
+ aFolderObj->Add(comp->fEffTPCTan);\r
\r
+ h_sigmaidealpidtot[1]->SetXTitle("p_{t}");\r
+ h_sigmaidealpidtot[1]->SetYTitle("efficiency");\r
+ h_sigmaidealpidtot[1]->SetTitle("Eff_SigmaIdeal");\r
h_sigmaidealpidtot[1]->SetName("Eff_SigmaIdeal");\r
+\r
+ h_sigmaidealpidtot[3]->SetXTitle("p_{t}");\r
+ h_sigmaidealpidtot[3]->SetYTitle("contamination");\r
+ h_sigmaidealpidtot[3]->SetTitle("Cont_SigmaIdeal");\r
h_sigmaidealpidtot[3]->SetName("Cont_SigmaIdeal");\r
\r
- if(folder) folder->Add(h_sigmaidealpidtot[1]);\r
- if(folder) folder->Add(h_sigmaidealpidtot[3]);\r
+ aFolderObj->Add(h_sigmaidealpidtot[1]);\r
+ aFolderObj->Add(h_sigmaidealpidtot[3]);\r
\r
+ h_sigmafullpidtot[1]->SetXTitle("p_{t}");\r
+ h_sigmafullpidtot[1]->SetYTitle("efficiency");\r
+ h_sigmafullpidtot[1]->SetTitle("Eff_SigmaFull");\r
h_sigmafullpidtot[1]->SetName("Eff_SigmaFull");\r
+\r
+ h_sigmafullpidtot[3]->SetXTitle("p_{t}");\r
+ h_sigmafullpidtot[3]->SetYTitle("contamination");\r
+ h_sigmafullpidtot[3]->SetTitle("Cont_SigmaFull");\r
h_sigmafullpidtot[3]->SetName("Cont_SigmaFull");\r
\r
- if(folder) folder->Add(h_sigmafullpidtot[1]);\r
- if(folder) folder->Add(h_sigmafullpidtot[3]);\r
+ aFolderObj->Add(h_sigmafullpidtot[1]);\r
+ aFolderObj->Add(h_sigmafullpidtot[3]);\r
\r
+ h_sigmaday0pidtot[1]->SetXTitle("p_{t}");\r
+ h_sigmaday0pidtot[1]->SetYTitle("efficiency");\r
+ h_sigmaday0pidtot[1]->SetTitle("Eff_SigmaDay0");\r
h_sigmaday0pidtot[1]->SetName("Eff_SigmaDay0");\r
+\r
+ h_sigmaday0pidtot[3]->SetXTitle("p_{t}");\r
+ h_sigmaday0pidtot[3]->SetYTitle("contamination");\r
+ h_sigmaday0pidtot[3]->SetTitle("Cont_SigmaDay0");\r
h_sigmaday0pidtot[3]->SetName("Cont_SigmaDay0");\r
\r
- if(folder) folder->Add(h_sigmaday0pidtot[1]);\r
- if(folder) folder->Add(h_sigmaday0pidtot[3]);\r
+ aFolderObj->Add(h_sigmaday0pidtot[1]);\r
+ aFolderObj->Add(h_sigmaday0pidtot[3]);\r
\r
- for(Int_t idx = 0; idx<5; idx++)\r
+ for(Int_t jdx = 0; jdx<5; jdx++)\r
{\r
- sprintf(name,"Eff_SigmaIdeal_%d",idx);\r
- sprintf(name1,"Cont_SigmaIdeal_%d",idx);\r
+ sprintf(name,"Eff_SigmaIdeal_%d",jdx);\r
+ sprintf(name1,"Cont_SigmaIdeal_%d",jdx);\r
+\r
\r
- h_sigmaidealpid[idx+5]->SetName(name);\r
- h_sigmaidealpid[idx+15]->SetName(name1);\r
+ h_sigmaidealpid[jdx+5]->SetXTitle("p_{t}");\r
+ h_sigmaidealpid[jdx+5]->SetYTitle("efficiency");\r
+ h_sigmaidealpid[jdx+5]->SetTitle(name);\r
+ h_sigmaidealpid[jdx+5]->SetName(name);\r
\r
- if(folder) folder->Add(h_sigmaidealpid[idx+5]);\r
- if(folder) folder->Add(h_sigmaidealpid[idx+15]);\r
+ h_sigmaidealpid[jdx+15]->SetXTitle("p_{t}");\r
+ h_sigmaidealpid[jdx+15]->SetYTitle("contamination");\r
+ h_sigmaidealpid[jdx+15]->SetTitle(name1);\r
+ h_sigmaidealpid[jdx+15]->SetName(name1);\r
\r
- sprintf(name,"Eff_SigmaFull_%d",idx);\r
- sprintf(name1,"Cont_SigmaFull_%d",idx);\r
+ aFolderObj->Add(h_sigmaidealpid[jdx+5]);\r
+ aFolderObj->Add(h_sigmaidealpid[jdx+15]);\r
\r
- h_sigmafullpid[idx+5]->SetName(name);\r
- h_sigmafullpid[idx+15]->SetName(name1);\r
+ sprintf(name,"Eff_SigmaFull_%d",jdx);\r
+ sprintf(name1,"Cont_SigmaFull_%d",jdx);\r
\r
- if(folder) folder->Add(h_sigmafullpid[idx+5]);\r
- if(folder) folder->Add(h_sigmafullpid[idx+15]);\r
+ h_sigmafullpid[jdx+5]->SetXTitle("p_{t}");\r
+ h_sigmafullpid[jdx+5]->SetYTitle("efficiency");\r
+ h_sigmafullpid[jdx+5]->SetTitle(name);\r
+ h_sigmafullpid[jdx+5]->SetName(name);\r
\r
- sprintf(name,"Eff_SigmaDay0_%d",idx);\r
- sprintf(name1,"Cont_SigmaDay0_%d",idx);\r
+ h_sigmafullpid[jdx+15]->SetXTitle("p_{t}");\r
+ h_sigmafullpid[jdx+15]->SetYTitle("contamination");\r
+ h_sigmafullpid[jdx+15]->SetTitle(name1);\r
+ h_sigmafullpid[jdx+15]->SetName(name1);\r
\r
- h_sigmaday0pid[idx+5]->SetName(name);\r
- h_sigmaday0pid[idx+15]->SetName(name1);\r
+ aFolderObj->Add(h_sigmafullpid[jdx+5]);\r
+ aFolderObj->Add(h_sigmafullpid[jdx+15]);\r
\r
- if(folder) folder->Add(h_sigmaday0pid[idx+5]);\r
- if(folder) folder->Add(h_sigmaday0pid[idx+15]);\r
+ sprintf(name,"Eff_SigmaDay0_%d",jdx);\r
+ sprintf(name1,"Cont_SigmaDay0_%d",jdx);\r
+\r
+ h_sigmaday0pid[jdx+5]->SetXTitle("p_{t}");\r
+ h_sigmaday0pid[jdx+5]->SetYTitle("efficiency");\r
+ h_sigmaday0pid[jdx+5]->SetTitle(name);\r
+ h_sigmaday0pid[jdx+5]->SetName(name);\r
+\r
+ h_sigmaday0pid[jdx+15]->SetXTitle("p_{t}");\r
+ h_sigmaday0pid[jdx+15]->SetYTitle("contamination");\r
+ h_sigmaday0pid[jdx+15]->SetTitle(name1);\r
+ h_sigmaday0pid[jdx+15]->SetName(name1);\r
+\r
+ aFolderObj->Add(h_sigmaday0pid[jdx+5]);\r
+ aFolderObj->Add(h_sigmaday0pid[jdx+15]);\r
}\r
\r
- // set pointer to fAnalysisFolder\r
- fAnalysisFolder = folder;\r
+ // export objects to analysis folder\r
+ fAnalysisFolder = ExportToFolder(aFolderObj);\r
\r
+ // delete only TObjArray\r
+ if(aFolderObj) delete aFolderObj;\r
}\r
\r
+//_____________________________________________________________________________\r
+TFolder* AliComparisonEff::ExportToFolder(TObjArray * array) \r
+{\r
+ // recreate folder avery time and export objects to new one\r
+ //\r
+ AliComparisonEff * comp=this;\r
+ TFolder *folder = comp->GetAnalysisFolder();\r
+\r
+ TString name, title;\r
+ TFolder *newFolder = 0;\r
+ Int_t i = 0;\r
+ Int_t size = array->GetSize();\r
+\r
+ if(folder) { \r
+ // get name and title from old folder\r
+ name = folder->GetName(); \r
+ title = folder->GetTitle(); \r
+\r
+ // delete old one\r
+ delete folder;\r
+\r
+ // create new one\r
+ newFolder = CreateFolder(name.Data(),title.Data());\r
+ newFolder->SetOwner();\r
+\r
+ // add objects to folder\r
+ while(i < size) {\r
+ newFolder->Add(array->At(i));\r
+ i++;\r
+ }\r
+ }\r
+\r
+return newFolder;\r
+}\r
+\r
+\r
//_____________________________________________________________________________\r
TFolder* AliComparisonEff::CreateFolder(TString name,TString title) { \r
// create folder for analysed histograms\r