]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskChargedJetsPA.C
update from Ruediger
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskChargedJetsPA.C
1 AliAnalysisTaskChargedJetsPA* AddTaskChargedJetsPA(
2   Double_t            jetRadius               = 0.4,
3   Int_t               trigger                 = AliVEvent::kINT7,
4   Bool_t              isMC                    = kFALSE,
5   Double_t            randomConeR             = 0.4,
6   Double_t            trackBgrdConeR          = 0.6,
7   const char*         usedTracks              = "PicoTracks",
8   const char*         centralityType          = "V0A",
9   Double_t            trackEtaWindow          = 0.9,
10   Double_t            vertexWindow            = 10.0,
11   Double_t            vertexMaxR              = 1.0,
12   Double_t            minJetPt                = 5.0, // signal jet min pt
13   Double_t            dijetLeadingMinPt       = 10.0,
14   Double_t            dijetMaxAngleDev        = 10.0,
15   Int_t               numberOfPtHardBins      = 0,
16   const char*         fileEtaCorrectionFactors= "alien:///alice/cern.ch/user/r/rhaake/pA/EtaCorrectionFactors.root",
17   const char*         externalMacro           = NULL
18 )
19 {
20   // #### Detect the demanded trigger with its readable name
21   TString triggerName(Form("Trigger_%i", trigger));
22   if (trigger == AliVEvent::kAnyINT)
23     triggerName = "kAnyINT";
24   else if (trigger == AliVEvent::kAny)
25     triggerName = "kAny";
26   else if(trigger == AliVEvent::kINT7)
27     triggerName = "kINT7";
28   else if(trigger == AliVEvent::kMB)
29     triggerName = "kMB";
30   else if(trigger == AliVEvent::kEMC7)
31     triggerName = "kEMC7";
32   else if(trigger == AliVEvent::kEMCEJE)
33     triggerName = "kEMCEJE";
34   else if(trigger == AliVEvent::kEMCEGA)
35     triggerName = "kEMCEGA";
36
37   // #### Define manager and data container names
38   AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
39   if (!manager) {
40     ::Error("AddTaskChargedJetsPA", "No analysis manager to connect to.");
41     return NULL;
42   }
43   TString myContName("");
44   if(isMC)
45     myContName = Form("AnalysisR0%2.0f_%s_MC",jetRadius*100,triggerName.Data());
46   else
47     myContName = Form("AnalysisR0%2.0f_%s",jetRadius*100,triggerName.Data());
48
49   // #### Add necessary jet finder tasks
50   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
51   AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(usedTracks,"",1,jetRadius,1,0.150,0.300);// anti-kt
52   AliEmcalJetTask* jetFinderTaskKT = AddTaskEmcalJet(usedTracks,"",0,jetRadius,1,0.150,0.300); // kt
53
54   // #### Load correction factors from alien
55   TH2D* corrFactorsKT = NULL;
56   TH2D* corrFactorsRC = NULL;
57   TH2D* corrFactorsTR = NULL;
58   if (fileEtaCorrectionFactors)
59   {
60     // trying to connect to alien
61     if (!TGrid::Connect("alien://"))
62       ::Warning("AddTaskChargedJetsPA", "AliEn connection failed!");
63     else
64     { 
65       ::Info("AddTaskChargedJetsPA", "AliEn connection successful!");
66       // Copy eta correction file
67       Bool_t copied = TFile::Cp(fileEtaCorrectionFactors,"file:EtaCorrectionFactors.root");
68       if(copied)
69       {
70         TFile* tmpFile= new TFile("EtaCorrectionFactors.root","READ");
71         corrFactorsKT = static_cast<TH2D*>(tmpFile->Get("EtaCorrectionFactorsKT"));
72         corrFactorsRC = static_cast<TH2D*>(tmpFile->Get("EtaCorrectionFactorsRC"));
73         corrFactorsTR = static_cast<TH2D*>(tmpFile->Get("EtaCorrectionFactorsTR"));
74       }
75       else
76         ::Warning("AddTaskChargedJetsPA", "AliEn copying failed!");
77     }
78   }
79   // #### Define analysis task
80   AliAnalysisTaskChargedJetsPA *task = NULL;
81   contHistos = manager->CreateContainer(myContName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJetsPA", AliAnalysisManager::GetCommonFileName()));
82   task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA_%s_%s", jetFinderTask->GetName(), triggerName.Data()), usedTracks, jetFinderTask->GetName(),jetFinderTaskKT->GetName());
83
84   // #### Task preferences
85   task->SetAcceptanceWindows(trackEtaWindow, vertexWindow, vertexMaxR, jetRadius, jetRadius);
86   task->SetSignalJetMinPt(minJetPt);
87   task->SetSignalJetMinArea(0.6*jetRadius*jetRadius*TMath::Pi());
88   task->SetDijetLeadingMinPt(dijetLeadingMinPt);
89   task->SetDijetMaxAngleDeviation(dijetMaxAngleDev);
90   task->SetRandConeRadius(randomConeR);
91   task->SetTRBackgroundConeRadius(trackBgrdConeR);
92   task->SelectCollisionCandidates(trigger);
93   task->SetCentralityType(centralityType);
94   if(numberOfPtHardBins)
95     task->SetNumberOfPtHardBins(numberOfPtHardBins);
96
97   if(corrFactorsKT)
98     task->SetKTEtaCorrectionFactors(corrFactorsKT);
99   if(corrFactorsRC)
100     task->SetRCEtaCorrectionFactors(corrFactorsRC);
101   if(corrFactorsTR)
102     task->SetTREtaCorrectionFactors(corrFactorsTR);
103
104   // #### Add analysis task
105   manager->AddTask(task);
106   manager->ConnectInput(task, 0, manager->GetCommonInputContainer());
107   manager->ConnectOutput(task, 1, contHistos);
108
109   // #### Do some nasty piggybacking on demand
110   if (externalMacro)
111     gROOT->LoadMacro(externalMacro);
112
113
114   return task;
115 }