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