]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromPYTHIA.C
up from salvatore
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromPYTHIA.C
1 // $Id: AddTaskJetEmbeddingFromPYTHIA.C  $
2
3 AliJetEmbeddingFromPYTHIATask* AddTaskJetEmbeddingFromPYTHIA(
4   const char     *tracksName    = "Tracks",
5   const char     *clusName      = "",
6   const char     *cellsName     = "EMCALCells",
7   const char     *MCPartName    = "",
8   const char     *simpath       = "/alice/sim/2012/LHC12a15e",
9   Int_t           nPtHard       = 11,
10   Double_t       *ptHardScaling = 0,
11   const char     *aodTreeName   = "aodTree",
12   const char     *aodTracksName = "tracks",
13   const char     *aodClusName   = "",
14   const char     *aodCellsName  = "emcalCells",
15   const char     *aodMCPartName = "mcparticles",
16   const char     *runperiod     = "lhc12a15e",
17   Bool_t          includeNoITS  = kTRUE,
18   Double_t        minCent       = -1,
19   Double_t        maxCent       = -1,
20   UInt_t          mask          = AliVEvent::kAny,
21   const Int_t     nTracks       = 1234567890,
22   const Int_t     nClus         = 0,
23   const Int_t     nCells        = 1234567890,
24   const Bool_t    copyArray     = kTRUE,
25   const Int_t     nFiles        = 1234567890,
26   const Bool_t    makeQA        = kFALSE,
27   const Double_t  minPt         = 0,
28   const Double_t  maxPt         = 1000,
29   const Double_t  minEta        = -0.9,
30   const Double_t  maxEta        = 0.9,
31   const Double_t  minPhi        = 0,
32   const Double_t  maxPhi        = TMath::Pi() * 2,
33   const char     *taskName      = "JetEmbeddingFromPYTHIATask"
34 )
35 {  
36   // Get the pointer to the existing analysis manager via the static access method.
37   //==============================================================================
38   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
39   if (!mgr)
40   {
41     ::Error("AddTaskJetEmbeddingFromPYTHIA", "No analysis manager to connect to.");
42     return NULL;
43   }  
44   
45   // Check the analysis type using the event handlers connected to the analysis manager.
46   //==============================================================================
47   if (!mgr->GetInputEventHandler())
48   {
49     ::Error("AddTaskJetEmbeddingFromPYTHIA", "This task requires an input event handler");
50     return NULL;
51   }
52   
53   //-------------------------------------------------------
54   // Init the task and do settings
55   //-------------------------------------------------------
56
57   AliJetEmbeddingFromPYTHIATask *jetEmb = new AliJetEmbeddingFromPYTHIATask(taskName,makeQA);
58   jetEmb->SetTracksName(tracksName);
59   jetEmb->SetClusName(clusName);
60   jetEmb->SetCellsName(cellsName);
61   jetEmb->SetMCParticlesName(MCPartName);
62   jetEmb->SetAODTreeName(aodTreeName);
63   jetEmb->SetAODTracksName(aodTracksName);
64   jetEmb->SetAODClusName(aodClusName);
65   jetEmb->SetAODCellsName(aodCellsName);
66   jetEmb->SetAODMCParticlesName(aodMCPartName);
67   jetEmb->SetCentralityRange(minCent, maxCent);
68   jetEmb->SetTriggerMask(mask);
69   jetEmb->SetNCells(nCells);
70   jetEmb->SetNClusters(nClus);
71   jetEmb->SetNTracks(nTracks);
72   jetEmb->SetCopyArray(copyArray);
73   jetEmb->SetEtaRange(minEta, maxEta);
74   jetEmb->SetPhiRange(minPhi, maxPhi);
75   jetEmb->SetPtRange(minPt, maxPt);
76
77   jetEmb->SetIncludeNoITS(includeNoITS);
78   TString runPeriod(runperiod);
79   runPeriod.ToLower();
80   if (runPeriod == "lhc12a15a" || runPeriod == "lhc12a15e") {
81     jetEmb->SetAODfilterBits(256,16);
82   }
83   else {
84     if (runPeriod.IsNull())
85       ::Warning("Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.");
86   }
87
88   jetEmb->SetPYTHIAPath(simpath);
89
90   if (nPtHard > 0) {
91     if (ptHardScaling==0) {
92       ptHardScaling = new Double_t[nPtHard];
93       for (Int_t i = 0; i < nPtHard; i++)
94         ptHardScaling[i] = 1;
95     }
96     jetEmb->SetPtHardBinScaling(nPtHard, ptHardScaling);
97   }
98
99   //-------------------------------------------------------
100   // Final settings, pass to manager and set the containers
101   //-------------------------------------------------------
102
103   mgr->AddTask(jetEmb);
104     
105   // Create containers for input/output
106   mgr->ConnectInput(jetEmb, 0, mgr->GetCommonInputContainer());
107
108   if (makeQA) {
109     TString contName = taskName;
110     contName += "_histos";
111     AliAnalysisDataContainer *outc = mgr->CreateContainer(contName,
112                                                           TList::Class(),
113                                                           AliAnalysisManager::kOutputContainer,
114                                                           "AnalysisResults.root");
115     mgr->ConnectOutput(jetEmb, 1, outc);
116   }
117
118   return jetEmb;
119 }