]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromGen.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromGen.C
1 // $Id$
2
3 AliJetEmbeddingFromGenTask* AddTaskJetEmbeddingFromGen(
4   Int_t           genType        = 0, //use Pythia as default
5   Double_t        ptHardMin      = 50.,
6   Double_t        ptHardMax      = 1000.,
7   Double_t        ecms           = 2760.,
8   const char     *tracksName     = "GenParticles",
9   const char     *taskName       = "JetEmbeddingFromGenTask",
10   const Double_t  minPt          = 0.15,
11   const Double_t  maxPt          = 1000,
12   const Double_t  minEta         = -0.9,
13   const Double_t  maxEta         = 0.9,
14   const Double_t  minPhi         = 0,
15   const Double_t  maxPhi         = TMath::Pi() * 2,
16   const Bool_t    copyArray      = kTRUE,
17   const Bool_t    drawQA         = kTRUE,
18   const char     *pythiaInfoName = "PythiaInfo",
19   Float_t         ptWeight       = 0,
20   Int_t           kTune          = 2,
21   Int_t           kColorReco     = 1,
22   Float_t         kQuench        = 4.4e6,
23   Int_t           kAnglePyquen   = 2   
24 )
25 {
26   AliGenerator *genGen = NULL;
27   if(genType==0) { //PYTHIA Perugia 2011
28     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/train/AddMCGenPythia.C");
29     genGen = AddMCGenPythia(ecms, ptHardMin, ptHardMax, kTune,kColorReco,ptWeight);
30   }
31   else if(genType==1 || genType==2) { //QPYTHIA and PYQUEN
32     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/train/AddMCGenQuench.C");
33     genGen = AddMCGenQuench(ecms, ptHardMin, ptHardMax, genType,kQuench,kAnglePyquen,ptWeight);
34   }
35   if(!genGen)   {
36     ::Error("AddTaskJetEmbeddingFromGenTask", "Generator does not exist");
37     return NULL;
38   }
39
40   AliJetEmbeddingFromGenTask *task = AddTaskJetEmbeddingFromGen(genGen,tracksName,taskName,minPt,maxPt,minEta,maxEta,minPhi,maxPhi,copyArray,drawQA,pythiaInfoName);
41
42   return task;
43 }
44
45 AliJetEmbeddingFromGenTask* AddTaskJetEmbeddingFromGen(
46   AliGenerator   *genGen,
47   const char     *tracksName     = "GenParticles",
48   const char     *taskName       = "JetEmbeddingFromGenTask",
49   const Double_t  minPt          = 0.15,
50   const Double_t  maxPt          = 1000,
51   const Double_t  minEta         = -0.9,
52   const Double_t  maxEta         = 0.9,
53   const Double_t  minPhi         = 0,
54   const Double_t  maxPhi         = TMath::Pi() * 2,
55   const Bool_t    copyArray      = kTRUE,
56   const Bool_t    drawQA         = kTRUE,
57   const char     *pythiaInfoName = ""
58 )
59 {  
60   // Get the pointer to the existing analysis manager via the static access method.
61   //==============================================================================
62   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
63   if (!mgr)
64   {
65     ::Error("AddTaskJetEmbedding", "No analysis manager to connect to.");
66     return NULL;
67   }  
68   
69   // Check the analysis type using the event handlers connected to the analysis manager.
70   //==============================================================================
71   if (!mgr->GetInputEventHandler())
72   {
73     ::Error("AddTaskJetEmbedding", "This task requires an input event handler");
74     return NULL;
75   }
76   
77   //-------------------------------------------------------
78   // Init the task and do settings
79   //-------------------------------------------------------
80
81   AliJetEmbeddingFromGenTask *jetEmb = new AliJetEmbeddingFromGenTask(taskName,drawQA);
82   // if pythia is used as a generator, tell it not to print the event history to the screen
83   if(genGen) {
84     if(TString(genGen->IsA()->GetName()).EqualTo("AliGenPythia")) genGen->AliGenPythia::SetEventListRange(-10, -10);
85     jetEmb->SetGen(genGen);
86   }
87   jetEmb->SetTracksName(tracksName);
88   jetEmb->SetPythiaInfoName(pythiaInfoName);
89   jetEmb->SetEtaRange(minEta, maxEta);
90   jetEmb->SetPhiRange(minPhi, maxPhi);
91   jetEmb->SetPtRange(minPt, maxPt);
92   jetEmb->SetCopyArray(copyArray);
93
94   //-------------------------------------------------------
95   // Final settings, pass to manager and set the containers
96   //-------------------------------------------------------
97
98   mgr->AddTask(jetEmb);
99     
100   // Create containers for input/output
101   mgr->ConnectInput (jetEmb, 0, mgr->GetCommonInputContainer() );
102
103   if (drawQA) {
104     TString contName = taskName;
105     contName += "_histos";
106     AliAnalysisDataContainer *outc = mgr->CreateContainer(contName,
107                                                           TList::Class(),
108                                                           AliAnalysisManager::kOutputContainer,
109                                                           Form("%s",AliAnalysisManager::GetCommonFileName()));
110     mgr->ConnectOutput(jetEmb, 1, outc);
111   }
112
113
114   return jetEmb;
115 }