]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromGen.C
Pythia Event Weight modifications
[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     *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
46 AliJetEmbeddingFromGenTask* AddTaskJetEmbeddingFromGen(
47   AliGenerator   *genGen,
48   const char     *tracksName     = "GenParticles",
49   const char     *taskName       = "JetEmbeddingFromGenTask",
50   const Double_t  minPt          = 10,
51   const Double_t  maxPt          = 10,
52   const Double_t  minEta         = -0.9,
53   const Double_t  maxEta         = 0.9,
54   const Double_t  minPhi         = 0,
55   const Double_t  maxPhi         = TMath::Pi() * 2,
56   const Bool_t    copyArray      = kTRUE,
57   const Bool_t    drawQA         = kTRUE,
58   const char     *pythiaInfoName = ""
59 )
60 {  
61   // Get the pointer to the existing analysis manager via the static access method.
62   //==============================================================================
63   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
64   if (!mgr)
65   {
66     ::Error("AddTaskJetEmbedding", "No analysis manager to connect to.");
67     return NULL;
68   }  
69   
70   // Check the analysis type using the event handlers connected to the analysis manager.
71   //==============================================================================
72   if (!mgr->GetInputEventHandler())
73   {
74     ::Error("AddTaskJetEmbedding", "This task requires an input event handler");
75     return NULL;
76   }
77   
78   //-------------------------------------------------------
79   // Init the task and do settings
80   //-------------------------------------------------------
81
82   AliJetEmbeddingFromGenTask *jetEmb = new AliJetEmbeddingFromGenTask(taskName,drawQA);
83   // if pythia is used as a generator, tell it not to print the event history to the screen
84   if(genGen) {
85     if(TString(genGen->IsA()->GetName()).EqualTo("AliGenPythia")) genGen->AliGenPythia::SetEventListRange(-10, -10);
86     jetEmb->SetGen(genGen);
87   }
88   jetEmb->SetTracksName(tracksName);
89   jetEmb->SetPythiaInfoName(pythiaInfoName);
90   jetEmb->SetEtaRange(minEta, maxEta);
91   jetEmb->SetPhiRange(minPhi, maxPhi);
92   jetEmb->SetPtRange(minPt, maxPt);
93   jetEmb->SetCopyArray(copyArray);
94
95   //-------------------------------------------------------
96   // Final settings, pass to manager and set the containers
97   //-------------------------------------------------------
98
99   mgr->AddTask(jetEmb);
100     
101   // Create containers for input/output
102   mgr->ConnectInput (jetEmb, 0, mgr->GetCommonInputContainer() );
103
104   if (drawQA) {
105     TString contName = taskName;
106     contName += "_histos";
107     AliAnalysisDataContainer *outc = mgr->CreateContainer(contName,
108                                                           TList::Class(),
109                                                           AliAnalysisManager::kOutputContainer,
110                                                           Form("%s",AliAnalysisManager::GetCommonFileName()));
111     mgr->ConnectOutput(jetEmb, 1, outc);
112   }
113
114
115   return jetEmb;
116 }