]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/AddTaskFourPion.C
AddTask fix
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / AddTaskFourPion.C
1 AliFourPion *AddTaskFourPion(
2                                  Bool_t MCcase=kFALSE,
3                                  Bool_t TabulatePairs=kFALSE,
4                                  Int_t CentBinLowLimit=0, 
5                                  Int_t CentBinHighLimit=1,
6                                  TString StWeightName="alien:///alice/cern.ch/user/d/dgangadh/WeightFile_FourPion.root",
7                                  TString StMomResName="alien:///alice/cern.ch/user/d/dgangadh/MomResFile_FourPion.root",
8                                  TString StKName="alien:///alice/cern.ch/user/d/dgangadh/KFile_FourPion.root",
9                                  TString StMuonName="alien:///alice/cern.ch/user/d/dgangadh/MuonCorrection_FourPion.root"
10                              ) {
11   
12   //===========================================================================
13   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
14   if (!mgr) {
15     ::Error("AddTaskFourPion", "No analysis manager to connect to.");
16     return NULL;
17   }
18  
19
20   //____________________________________________//
21   // Create task
22   AliFourPion *FourPionTask = new AliFourPion("FourPionTask");
23   if(!FourPionTask) return NULL;
24   FourPionTask->SetLEGOCase(kTRUE);
25   FourPionTask->SetMCdecision(MCcase);
26   FourPionTask->SetPbPbCase(kTRUE);
27   FourPionTask->SetGenerateSignal(kFALSE);
28   FourPionTask->SetTabulatePairs(TabulatePairs);
29   FourPionTask->SetInterpolationType(kFALSE);
30   FourPionTask->SetCentBinRange(CentBinLowLimit, CentBinHighLimit);
31   FourPionTask->SetRMax(11);
32   FourPionTask->SetfcSq(0.7);
33   FourPionTask->SetFilterBit(7);
34   FourPionTask->SetMaxChi2NDF(10);
35   FourPionTask->SetMinTPCncls(0);
36   FourPionTask->SetPairSeparationCutEta(0.02);
37   FourPionTask->SetPairSeparationCutPhi(0.045);
38   FourPionTask->SetNsigmaTPC(2.0);
39   FourPionTask->SetNsigmaTOF(2.0);
40   //
41   FourPionTask->SetMixedChargeCut(kFALSE);
42   FourPionTask->SetMinPt(0.16);
43   FourPionTask->SetMaxPt(1.0);
44   FourPionTask->SetKT3transition(0.3);
45   FourPionTask->SetKT4transition(0.3);
46   mgr->AddTask(FourPionTask);
47
48
49   // Create ONLY the output containers for the data produced by the task.
50   // Get and connect other common input/output containers via the manager as below
51   //==============================================================================
52   TString outputFileName = AliAnalysisManager::GetCommonFileName();
53   outputFileName += ":PWGCF.outputFourPionAnalysis.root";
54   AliAnalysisDataContainer *coutFourPion = mgr->CreateContainer("FourPionOutput", TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
55   mgr->ConnectInput(FourPionTask, 0, mgr->GetCommonInputContainer());
56   mgr->ConnectOutput(FourPionTask, 1, coutFourPion);
57   
58
59   TFile *inputFileWeight = 0;
60   TFile *inputFileMomRes = 0;
61   TFile *inputFileFSI = 0;
62
63  
64   if(!TabulatePairs){
65     inputFileWeight = TFile::Open(StWeightName,"OLD");
66     if (!inputFileWeight){
67       cout << "Requested file:" << inputFileWeight << " was not opened. ABORT." << endl;
68       return NULL;
69     }
70     ////////////////////////////////////////////////////
71     // C2 Weight File
72     const Int_t ktbins_temp = FourPionTask->GetNumKtBins();
73     const Int_t cbins_temp = FourPionTask->GetNumCentBins(); 
74     const Int_t ktbins = ktbins_temp;
75     const Int_t cbins = cbins_temp;
76
77     TH3F *weightHisto[ktbins][cbins];
78     for(Int_t i=0; i<ktbins; i++){
79       for(Int_t j=0; j<cbins; j++){
80         TString name = "Weight_Kt_";
81         name += i;
82         name += "_Ky_0_M_";
83         name += j;
84         name += "_ED_0";
85         
86         weightHisto[i][j] = (TH3F*)inputFileWeight->Get(name);
87       }
88     }
89     FourPionTask->SetWeightArrays( kTRUE, weightHisto );
90     ////////////////////////////////////////////////////
91   }// TabulatePairs check
92   
93   if(!MCcase && !TabulatePairs){
94     
95     inputFileMomRes = TFile::Open(StMomResName,"OLD");
96     if (!inputFileMomRes){
97       cout << "Requested file:" << inputFileMomRes << " was not opened. ABORT." << endl;
98       return NULL;
99     }
100     ////////////////////////////////////////////////////
101     // Momentum Resolution File
102     TH2D *momResHisto2DSC = 0;
103     TH2D *momResHisto2DMC = 0;
104     momResHisto2DSC = (TH2D*)inputFileMomRes->Get("MRC_C2_SC");
105     momResHisto2DMC = (TH2D*)inputFileMomRes->Get("MRC_C2_MC");
106     FourPionTask->SetMomResCorrections( kTRUE, momResHisto2DSC, momResHisto2DMC );
107     ////////////////////////////////////////////////////
108
109     // Muon corrections
110     inputFileMuon = TFile::Open(StMuonName,"OLD");
111     if (!inputFileMuon){
112       cout << "Requested file:" << inputFileMuon << " was not opened. ABORT." << endl;
113       return NULL;
114     }
115     TH2D *muonHisto2D = 0;
116     muonHisto2D = (TH2D*)inputFileMuon->Get("WeightmuonCorrection");
117     FourPionTask->SetMuonCorrections( kTRUE, muonHisto2D);
118
119   }// MCcase and TabulatePairs check
120   
121
122   ////////////////////////////////////////////////////
123   // FSI File
124   inputFileFSI = TFile::Open(StKName,"OLD");
125   if (!inputFileFSI){
126     cout << "Requested file:" << inputFileFSI << " was not opened. ABORT." << endl;
127     return NULL;
128   }  
129   TH1D *FSIss[12];
130   TH1D *FSIos[12];
131   for(Int_t index=0; index<12; index++) {
132     TString *nameSS=new TString("K2ss_");
133     *nameSS += index;
134     FSIss[index] = (TH1D*)inputFileFSI->Get(nameSS->Data());
135     TString *nameOS=new TString("K2os_");
136     *nameOS += index;
137     FSIos[index] = (TH1D*)inputFileFSI->Get(nameOS->Data());
138     //
139     FSIss[index]->SetDirectory(0);
140     FSIos[index]->SetDirectory(0);
141   }
142   //
143   FourPionTask->SetFSICorrelations( kTRUE, FSIss, FSIos );
144   ////////////////////////////////////////////////////
145   
146   
147   // Return the task pointer
148   return FourPionTask;
149 }