]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/macros/configProtonAnalysis.C
Implementing two different test pid procedures based on the raw dE/dx info and a...
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / macros / configProtonAnalysis.C
1 //__________________________________________________//
2 AliProtonAnalysis *GetProtonAnalysisObject(const char* analysisLevel = "ESD", 
3                                            const char* esdAnalysisType = "Hybrid", 
4                                            const char* pidMode = "Bayesian") {
5   //Function to setup the AliProtonAnalysis object and return it
6   AliProtonAnalysisBase *baseAnalysis = GetProtonAnalysisBaseObject(analysisLevel,esdAnalysisType,pidMode);
7
8   AliProtonAnalysis *analysis = new AliProtonAnalysis();
9   analysis->SetBaseAnalysis(baseAnalysis);
10   //if(analysisBase->GetEtaMode()) analysis->SetEtaMode();
11   analysis->InitAnalysisHistograms(baseAnalysis->GetNBinsX(),
12                                    baseAnalysis->GetMinX(),
13                                    baseAnalysis->GetMaxX(),
14                                    baseAnalysis->GetNBinsY(),
15                                    baseAnalysis->GetMinY(),
16                                    baseAnalysis->GetMaxY());
17     
18   return analysis;
19 }
20
21 //__________________________________________________//
22 AliProtonQAAnalysis *GetProtonQAAnalysisObject(const char* analysisLevel = "ESD",
23                                                const char* esdAnalysisType = "Hybrid",
24                                                const char* pidMode = "Bayesian") {
25   //Function to setup the AliProtonQAAnalysis object and return it
26   AliProtonAnalysisBase *baseAnalysis = GetProtonAnalysisBaseObject(analysisLevel,esdAnalysisType,pidMode);
27
28   AliProtonQAAnalysis *analysis = new AliProtonQAAnalysis();
29   analysis->SetQAOn();
30   analysis->SetRunMCAnalysis();
31   //analysis->SetMCProcessId(4);//4: weak decay - 13: hadronic interaction
32   //analysis->SetMotherParticlePDGCode(3122);//3122: Lambda
33   analysis->SetQAYPtBins(baseAnalysis->GetNBinsX(),
34                          baseAnalysis->GetMinX(),
35                          baseAnalysis->GetMaxX(),
36                          baseAnalysis->GetNBinsY(),
37                          baseAnalysis->GetMinY(),
38                          baseAnalysis->GetMaxY());
39
40   return analysis;
41 }
42
43 //__________________________________________________//
44 AliProtonAnalysisBase *GetProtonAnalysisBaseObject(const char* analysisLevel = "ESD",
45                                                    const char* esdAnalysisType = "Hybrid",
46                                                    const char* pidMode = "Bayesian") {
47   //Function to setup the AliProtonAnalysisBase object and return it
48   AliProtonAnalysisBase *baseAnalysis = new AliProtonAnalysisBase();
49   //baseAnalysis->SetDebugMode();
50   baseAnalysis->SetAnalysisLevel(analysisLevel);
51   if(analysisLevel == "ESD") {  
52     baseAnalysis->SetTriggerMode(AliProtonAnalysisBase::kMB2);
53     switch(esdAnalysisType) {
54     case "TPC":
55       baseAnalysis->SetAnalysisMode(AliProtonAnalysisBase::kTPC);
56       baseAnalysis->SetPhaseSpace(10, -0.5, 0.5, 16, 0.5, 0.9);
57       baseAnalysis->SetTPCpid();
58       baseAnalysis->SetMinTPCClusters(100);
59       baseAnalysis->SetMaxChi2PerTPCCluster(2.2);
60       baseAnalysis->SetMaxCov11(0.5);
61       baseAnalysis->SetMaxCov22(0.5);
62       baseAnalysis->SetMaxCov33(0.5);
63       baseAnalysis->SetMaxCov44(0.5);
64       baseAnalysis->SetMaxCov55(0.5);
65       baseAnalysis->SetMaxSigmaToVertexTPC(2.0);
66       //baseAnalysis->SetMaxDCAXYTPC(1.5);
67       //baseAnalysis->SetMaxDCAZTPC(1.5);
68       break;
69     case "Hybrid":
70       baseAnalysis->SetAnalysisMode(AliProtonAnalysisBase::kHybrid);
71       baseAnalysis->SetPhaseSpace(10, -0.5, 0.5, 16, 0.5, 0.9);
72       baseAnalysis->SetTPCpid();
73       baseAnalysis->SetMinTPCClusters(110);
74       baseAnalysis->SetMaxChi2PerTPCCluster(2.2);
75       baseAnalysis->SetMaxCov11(0.5);
76       baseAnalysis->SetMaxCov22(0.5);
77       baseAnalysis->SetMaxCov33(0.5);
78       baseAnalysis->SetMaxCov44(0.5);
79       baseAnalysis->SetMaxCov55(0.5);
80       baseAnalysis->SetMaxSigmaToVertex(2.0);
81       /*baseAnalysis->SetMaxDCAXY(1.5);
82         baseAnalysis->SetMaxDCAZ(1.5);*/
83       baseAnalysis->SetPointOnITSLayer6();
84       baseAnalysis->SetPointOnITSLayer5();
85       //baseAnalysis->SetPointOnITSLayer4();
86       //baseAnalysis->SetPointOnITSLayer3();
87       baseAnalysis->SetPointOnITSLayer2();
88       baseAnalysis->SetPointOnITSLayer1();
89       baseAnalysis->SetMinITSClusters(5);
90       break;
91     case "Global":
92       baseAnalysis->SetAnalysisMode(AliProtonAnalysisBase::kGlobal);
93       baseAnalysis->SetPhaseSpace(20, -1.0, 1.0, 48, 0.3, 1.5);
94       baseAnalysis->SetMinTPCClusters(110);
95       baseAnalysis->SetMaxChi2PerTPCCluster(2.2);
96       baseAnalysis->SetMaxCov11(0.5);
97       baseAnalysis->SetMaxCov22(0.5);
98       baseAnalysis->SetMaxCov33(0.5);
99       baseAnalysis->SetMaxCov44(0.5);
100       baseAnalysis->SetMaxCov55(0.5);
101       baseAnalysis->SetMaxSigmaToVertex(2.0);
102       //baseAnalysis->SetMaxDCAXY(2.0);
103       //baseAnalysis->SetMaxDCAZ(2.0);
104       baseAnalysis->SetTPCRefit();
105       baseAnalysis->SetPointOnITSLayer1();
106       baseAnalysis->SetPointOnITSLayer2();
107       //baseAnalysis->SetPointOnITSLayer3();
108       //baseAnalysis->SetPointOnITSLayer4();
109       baseAnalysis->SetPointOnITSLayer5();
110       baseAnalysis->SetPointOnITSLayer6();
111       baseAnalysis->SetMinITSClusters(5);
112       baseAnalysis->SetITSRefit();
113       baseAnalysis->SetESDpid();
114       break;
115     default:
116       break;
117     }
118     baseAnalysis->SetAcceptedVertexDiamond(5.,5.,15.);
119     baseAnalysis->SetEtaMode();
120     switch(pidMode) {
121     case "Bayesian":
122       baseAnalysis->SetPIDMode(AliProtonAnalysisBase::kBayesian);
123       //Momentum dependent priors
124       /*TFile *f = TFile::Open("$ALICE_ROOT/PWG2/data/PriorProbabilities.root ");
125         TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
126         TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
127         TF1 *fitPions = (TF1 *)f->Get("fitPions");
128         TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
129         TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
130         baseAnalysis->SetPriorProbabilityFunctions(fitElectrons,
131         fitMuons,
132         fitPions,
133         fitKaons,
134         fitProtons);*/
135       //Fixed prior probabilities
136       Double_t partFrac[5] = {0.01, 0.01, 0.85, 0.10, 0.05};
137       if(!baseAnalysis->IsPriorProbabilityFunctionUsed())
138         baseAnalysis->SetPriorProbabilities(partFrac);
139       break;
140     case "Ratio":
141       baseAnalysis->SetPIDMode(AliProtonAnalysisBase::kRatio);
142       break;
143     case "Sigma1":
144       baseAnalysis->SetPIDMode(AliProtonAnalysisBase::kSigma1);
145       baseAnalysis->SetNSigma(3);
146       baseAnalysis->SetdEdxBandInfo("$ALICE_ROOT/PWG2/data/protonsdEdxInfo.dat");
147       break;
148     case "Sigma2":
149       baseAnalysis->SetPIDMode(AliProtonAnalysisBase::kSigma2);
150       baseAnalysis->SetNSigma(3);
151       baseAnalysis->SetdEdxBandInfo("$ALICE_ROOT/PWG2/data/protonsdEdxInfo.dat");
152       break;
153     default:
154       break;
155     }//PID mode
156   }//ESD
157   if(analysisLevel == "MC") 
158     baseAnalysis->SetPhaseSpace(56, -1.0, 1.0, 16, 0.1, 1.5);
159
160   return baseAnalysis;
161 }