]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/macros/configs/PbPb/ConfigHFETRDpbpb.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / hfe / macros / configs / PbPb / ConfigHFETRDpbpb.C
1 AliAnalysisTaskHFE* ConfigHFETRDpbpb(Bool_t useMC=kFALSE, Bool_t beauty=kFALSE, UChar_t Sample=10,
2                                      UChar_t TPCcl=70, UChar_t TPCclPID = 80,
3                                      Double_t TPCclRatio = 0.6, Double_t TPCclshared = 1.1,
4                                      UChar_t ITScl=3,  Double_t ITSchi2perclusters=99999999.,
5                                      Double_t dcaxy=1000.0, Double_t dcaz=2000.0,
6                                      Double_t TPCs=0., Double_t TPCu=3.09,
7                                      Double_t TOFs=3.,Double_t IpSig=3., TString appendix,
8                                      UChar_t TRDtl = 5,UChar_t TRDeff = 2,Bool_t TRDonFlyCut = kFALSE, Bool_t TRDexactTracklets = kFALSE){
9   //
10   // HFE standard task configuration
11   //
12     Bool_t kAnalyseTaggedTracks = kTRUE;
13
14     Float_t eeff[6] = {0.7, 0.75, 0.8, 0.85, 0.9, 0.95};
15     Int_t eeffint[6] = {70, 75, 80, 85, 90, 95};
16     if(TRDeff >= 6 || TRDtl < 4 || TRDtl > 6) return NULL;
17
18   AliHFEcuts *hfecuts = new AliHFEcuts(appendix,"HFE cuts pbpb TOF TPC TRD");
19   hfecuts->CreateStandardCuts();
20
21   hfecuts->SetMinNClustersTPC(TPCcl);
22   hfecuts->SetMinNClustersTPCPID(TPCclPID);
23   hfecuts->SetMinRatioTPCclusters(TPCclRatio);
24   hfecuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
25   hfecuts->SetFractionOfSharedTPCClusters(TPCclshared);
26
27   hfecuts->SetMinNClustersITS(ITScl);
28   hfecuts->SetMaxChi2perClusterITS(ITSchi2perclusters);
29   hfecuts->SetCutITSpixel(AliHFEextraCuts::kFirst);
30   hfecuts->SetCheckITSLayerStatus(kFALSE);
31
32   hfecuts->SetIPcutParam(0,0,0,IpSig,kTRUE);
33   if(useMC && beauty) hfecuts->SetProductionVertex(0,100,0,100);
34
35   hfecuts->SetMaxImpactParam(dcaxy,dcaz);
36
37   hfecuts->SetMinNTrackletsTRD(TRDtl, TRDexactTracklets);   // number of trd tracklets
38
39
40   // event cuts
41   hfecuts->SetUseMixedVertex(kTRUE);
42   hfecuts->SetVertexRange(10.);
43
44   // others
45   hfecuts->SetTOFPIDStep(kTRUE);
46   //hfecuts->SetMaxChi2perClusterITS(36);
47   //hfecuts->SetTOFMISMATCHStep(kTRUE);
48   //hfecuts->SetTPCPIDCleanUpStep(kTRUE);
49   hfecuts->SetQAOn();
50
51   AliAnalysisTaskHFE *task = new AliAnalysisTaskHFE(appendix);
52   task->SetHFECuts(hfecuts);
53   task->SetPbPbAnalysis(kTRUE);
54   task->SetRemovePileUp(kTRUE);
55   task->GetPIDQAManager()->SetHighResolutionHistos();
56   
57   // Define Variables
58   Double_t ptbinning[36] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 
59                             1.3, 1.4, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.5, 4., 4.5, 5., 
60                             5.5, 6., 7., 8., 10., 12., 14., 16., 18., 20.};
61   Double_t etabinning[17] = {-0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0., 0.1, 0.2, 
62                              0.3, 0.4, 0.5, 0.6, 0.7, 0.8};
63   AliHFEvarManager *vm = task->GetVarManager();
64   //vm->AddVariable("pt");
65   //vm->AddVariable("eta");
66   vm->AddVariable("pt", 35, ptbinning);
67   vm->AddVariable("eta", 16, etabinning);
68   vm->AddVariable("phi");
69   vm->AddVariable("charge");
70   vm->AddVariable("source");
71   vm->AddVariable("centrality");
72
73   // no background function for TRD PbPb analysis at the moment
74   /*
75   if(!useMC){
76     
77     for(Int_t a=0;a<12;a++)
78       {
79         TF1 *hBackground = new TF1("hadronicBackgroundFunction","TMath::Exp([0]/x + [1])", 0., 20.);
80         hBackground->SetParameter(0, -43.87);
81         hBackground->SetParameter(1, 2.85);
82         task->SetBackGroundFactorsFunction(hBackground,a);
83       }
84   }
85   */
86
87
88   // Define PID
89   AliHFEpid *pid = task->GetPID();
90   if(useMC) pid->SetHasMCData(kTRUE);
91   pid->AddDetector("TOF", 0);
92  // pid->AddDetector("TRD", 2); // adjust order
93  // pid->AddDetector("TPC", 1);
94   pid->AddDetector("TRD", 1); // adjust order
95   pid->AddDetector("TPC", 2);
96
97   //pid->ConfigureTPCrejection();
98   
99   if(!useMC){
100     
101     Double_t params_centr_0_5[1];
102     Double_t params_centr_5_10[1];
103     Double_t params_centr_10_20[1];
104     Double_t params_centr_20_30[1];
105     Double_t params_centr_per[1];
106     params_centr_0_5[0]=TPCs;   // 0.16; // cut tuned for 0-10%
107     params_centr_5_10[0]=TPCs;  // 0.16; // cut tuned for 0-10%
108     params_centr_10_20[0]=TPCs; // 0.29;
109     params_centr_20_30[0]=TPCs; // 0.38;
110     params_centr_per[0]=TPCs;   // 0.44;
111     char *cutmodel;
112     cutmodel="pol0";
113     
114     
115     for(Int_t a=0;a<11;a++)
116       {
117         if(a>3)  pid->ConfigureTPCcentralityCut(a,cutmodel,params_centr_per,TPCu);
118         if(a==0) pid->ConfigureTPCcentralityCut(a,cutmodel,params_centr_0_5,TPCu);    //  0-5%
119         if(a==1) pid->ConfigureTPCcentralityCut(a,cutmodel,params_centr_5_10,TPCu);    //  5-10%
120         if(a==2) pid->ConfigureTPCcentralityCut(a,cutmodel,params_centr_10_20,TPCu);    //  10-20%
121         if(a==3) pid->ConfigureTPCcentralityCut(a,cutmodel,params_centr_20_30,TPCu);    //  20-30%
122       }
123   }
124   pid->ConfigureTOF(TOFs);
125
126
127   // adjust
128   AliHFEpidTRD *trdpid = pid->GetDetPID(AliHFEpid::kTRDpid);
129   trdpid->SetRenormalizeElPi();
130   trdpid->SetElectronEfficiency(eeff[TRDeff]);   // efficiency
131   trdpid->SetNTracklets(TRDtl);      // ntracklets threshold
132   //trdpid->SetCutNTracklets(TRDtl, TRDexactTracklets);
133   AliOADBContainer *cont = new AliOADBContainer("TRDthresholds");
134   cont->InitFromFile(Form("%s/util/hfe/TRD.OADBThresholds.root", gSystem->Getenv("TRAIN_ROOT")),"TRDthresholds");
135   trdpid->SetOADBThresholds(cont);
136   if(TRDonFlyCut) trdpid->SelectCutOnTheFly(kTRUE);
137
138
139   if(kAnalyseTaggedTracks)
140   {
141       // V0 tagged tracks
142       AliHFEcuts *v0trackCuts = new AliHFEcuts("V0trackCuts", "Track Cuts for tagged track Analysis");
143       v0trackCuts->CreateStandardCuts();
144
145       v0trackCuts->SetMinNClustersTPC(TPCcl);
146       v0trackCuts->SetMinNClustersTPCPID(TPCclPID);
147       v0trackCuts->SetFractionOfSharedTPCClusters(TPCclshared);
148       v0trackCuts->SetMinRatioTPCclusters(TPCclRatio);
149       v0trackCuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
150       v0trackCuts->SetMinNClustersITS(1);
151       v0trackCuts->SetMaxChi2perClusterITS(ITSchi2perclusters);
152       v0trackCuts->SetCutITSpixel(AliHFEextraCuts::kAny);
153       v0trackCuts->SetCheckITSLayerStatus(kFALSE);
154       v0trackCuts->UnsetVertexRequirement();
155       //v0trackCuts->SetMaxChi2perClusterITS(36);
156       //hfecuts->SetSigmaToVertex(10);
157       v0trackCuts->SetTOFPIDStep(kTRUE);
158       //v0trackCuts->SetTOFMISMATCHStep(kTRUE);
159       //v0trackCuts->SetTPCPIDCleanUpStep(kTRUE);
160       v0trackCuts->SetQAOn();
161       v0trackCuts->SetMinNTrackletsTRD(TRDtl); // condition for TRD tracklets
162
163       task->SwitchOnPlugin(AliAnalysisTaskHFE::kTaggedTrackAnalysis);
164       task->SetTaggedTrackCuts(v0trackCuts);
165       task->SetCleanTaggedTrack(kFALSE);
166   }
167   
168   // QA
169   task->SetQAOn(AliAnalysisTaskHFE::kPIDqa);
170   //task->SetFillSignalOnly(kFALSE);    // for DE pluging for MC
171   task->SetQAOn(AliAnalysisTaskHFE::kMCqa);
172   //task->SwitchOnPlugin(AliAnalysisTaskHFE::kIsElecBackGround);
173   //task->SwitchOnPlugin(AliAnalysisTaskHFE::kSecVtx);
174   task->SwitchOnPlugin(AliAnalysisTaskHFE::kDEstep);
175
176   printf("*************************************\n");
177   printf("Configuring task PbPb \n"); 
178   //if(isLHC10) printf("Configuring TPC1 Task 2010 :\n");
179   //if(isLHC11) printf("Configuring TPC1 Task 2011 :\n");
180   task->Print();
181   pid->PrintStatus();
182   printf("*************************************\n"); 
183   return task;
184 }