]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/macros/AddTaskLc2V0bachelor.C
PWGHFbase converted to native cmake
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskLc2V0bachelor.C
1 AliAnalysisTaskSELc2V0bachelor *AddTaskLc2V0bachelor(TString finname="Lc2V0bachelorCuts.root",
2                                                      Bool_t theMCon=kFALSE,
3                                                      Bool_t onTheFly=kFALSE,
4                                                      Bool_t writeVariableTree=kTRUE,
5                                                      Int_t nTour=0,
6                                                      Bool_t additionalChecks=kFALSE,
7                                                      Bool_t trackRotation=kFALSE,
8                                                      Int_t nRot=9,
9                                                      Double_t pTmin=0.,
10                                                      Double_t pTmax=999.,
11                                                      Double_t minRotAngle=5.*TMath::Pi()/6.,
12                                                      Double_t maxRotAngle=7.*TMath::Pi()/6.)
13 {
14
15   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16   if (!mgr) {
17     ::Error("AddTaskLc2V0bachelor", "No analysis manager to connect to.");
18     return NULL;
19   }  
20   
21   if (writeVariableTree && trackRotation)
22     trackRotation=kFALSE;
23
24   // cuts are stored in a TFile generated by makeTFile4CutsLc2V0bachelor.C in ./macros/
25   // set there the cuts!!!!!
26
27   Bool_t stdcuts=kFALSE;
28   TFile* filecuts;
29   if( finname.EqualTo("") ) {
30     stdcuts=kTRUE; 
31   } else {
32       filecuts=TFile::Open(finname.Data());
33       if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
34         AliFatal("Input file not found : check your cut object");
35       }
36   }
37
38   cout << " Is it std on not std cut? " << stdcuts << endl;
39   AliRDHFCutsLctoV0* RDHFCutsLctoV0anal = new AliRDHFCutsLctoV0();
40   if (stdcuts) RDHFCutsLctoV0anal->SetStandardCutsPP2010();
41   else RDHFCutsLctoV0anal = (AliRDHFCutsLctoV0*)filecuts->Get("LctoV0AnalysisCuts");
42   RDHFCutsLctoV0anal->SetName("LctoV0AnalysisCuts");
43   RDHFCutsLctoV0anal->SetMinPtCandidate(-1.);
44   RDHFCutsLctoV0anal->SetMaxPtCandidate(10000.);
45
46
47   // mm let's see if everything is ok
48   if (!RDHFCutsLctoV0anal) {
49     cout << "Specific AliRDHFCutsLctoV0 not found\n";
50     return;
51   }
52
53
54   //CREATE THE TASK
55
56   printf("CREATE TASK\n");
57   AliAnalysisTaskSELc2V0bachelor *task = new AliAnalysisTaskSELc2V0bachelor("AliAnalysisTaskSELc2V0bachelor",RDHFCutsLctoV0anal,onTheFly,writeVariableTree,additionalChecks,trackRotation);
58   task->SetAdditionalChecks(additionalChecks);
59   task->SetMC(theMCon);
60   task->SetK0SAnalysis(kTRUE);
61   task->SetDebugLevel(0);
62   task->SetNRotations(nRot);
63   task->SetPtMinToFillTheTree(pTmin);
64   task->SetPtMaxToFillTheTree(pTmax);
65   task->SetMinAngleForRot(minRotAngle);
66   task->SetMaxAngleForRot(maxRotAngle);
67   mgr->AddTask(task);
68
69   // Create and connect containers for input/output  
70   TString outputfile = AliAnalysisManager::GetCommonFileName();
71   outputfile += ":PWG3_D2H_Lc2pK0S_";
72   outputfile += nTour;
73
74   mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
75
76   // ----- output data -----
77   AliAnalysisDataContainer *coutput1   = mgr->CreateContainer(Form("chist%1d",nTour),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); // general histos
78   mgr->ConnectOutput(task,1,coutput1);
79   AliAnalysisDataContainer *coutputLc2 = mgr->CreateContainer(Form("Lc2pK0Scounter%1d",nTour),AliNormalizationCounter::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data()); //counter
80   mgr->ConnectOutput(task,2,coutputLc2);
81   AliAnalysisDataContainer *coutputLc3 = mgr->CreateContainer(Form("Lc2pK0SCuts%1d",nTour),AliRDHFCutsLctoV0::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); // cuts
82   mgr->ConnectOutput(task,3,coutputLc3);
83   if (!writeVariableTree) {
84     AliAnalysisDataContainer *coutputLc4 = mgr->CreateContainer(Form("Lc2pK0SAll%1d",nTour),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); // production histos
85     mgr->ConnectOutput(task,4,coutputLc4);
86     AliAnalysisDataContainer *coutputLc5 = mgr->CreateContainer(Form("Lc2pK0SPIDBach%1d",nTour),TList::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data()); // analysis histos
87     mgr->ConnectOutput(task,5,coutputLc5);
88
89     if (trackRotation) {
90       AliAnalysisDataContainer *coutputLc6 = mgr->CreateContainer(Form("Lc2pK0SPIDBachTR%1d",nTour),TList::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data()); // analysis histos
91       mgr->ConnectOutput(task,6,coutputLc6);
92     }
93
94   } else {
95     AliAnalysisDataContainer *coutputLc4 = mgr->CreateContainer(Form("Lc2pK0Svariables%1d",nTour),TTree::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); // variables tree
96     mgr->ConnectOutput(task,4,coutputLc4);
97   }
98
99   return task;
100
101 }