]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalDiJetAna.C
fix typo
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalDiJetAna.C
1 AliAnalysisTaskEmcalDiJetAna* AddTaskEmcalDiJetAna(TString     kTracksName         = "PicoTracks", 
2                                                    TString     kClusName           = "caloClusterCorr",
3                                                    Double_t    R                   = 0.4, 
4                                                    Double_t    ptminTrack          = 0.15, 
5                                                    Double_t    etminClus           = 0.3, 
6                                                    Int_t       rhoType             = 0,
7                                                    TString     trigClass           = "",
8                                                    const char *CentEst             = "V0A",
9                                                    Int_t       pSel                = AliVEvent::kINT7,
10                                                    Int_t       matchFullCh         = AliAnalysisTaskEmcalDiJetBase::kNoMatching,
11                                                    Double_t    ptTrackBias         = 0.,
12                                                    Int_t       corrType            = AliAnalysisTaskEmcalDiJetBase::kCorrelateTwo,
13                                                    Float_t     nefCut              = 10.,
14                                                    Int_t       nCentBins           = 5,
15                                                    Double_t    scaleFact           = 1.28
16                                                    ) {
17   
18   enum AlgoType {kKT, kANTIKT};
19   enum JetType  {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
20
21   // #### Define manager and data container names
22   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
23   if (!mgr) {
24     ::Error("AddTaskEmcalDiJet", "No analysis manager to connect to.");
25     return NULL;
26   }
27
28   // Check the analysis type using the event handlers connected to the analysis manager.
29   //==============================================================================
30   if (!mgr->GetInputEventHandler())
31     {
32       ::Error("AddTaskEmcalDiJet", "This task requires an input event handler");
33       return NULL;
34     }
35
36   // #### Add necessary jet finder tasks
37   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
38
39   AliEmcalJetTask* jetFinderTaskFull    = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus);
40   AliEmcalJetTask* jetFinderTaskCharged = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
41   jetFinderTaskFull->SelectCollisionCandidates(AliVEvent::kAny);
42   jetFinderTaskCharged->SelectCollisionCandidates(AliVEvent::kAny);
43
44
45   TString strJetsFull = jetFinderTaskFull->GetName();
46   TString strJetsCh   = jetFinderTaskCharged->GetName();
47
48   // Add kt jet finder and rho task in case we want background subtraction
49   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
50   AliEmcalJetTask *jetFinderKt;
51   AliEmcalJetTask *jetFinderAKt;
52   AliAnalysisTaskRhoSparse *rhoTask;
53   if(rhoType==1) {
54     jetFinderKt   = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus);
55     jetFinderKt->SetMinJetPt(0.);
56     jetFinderAKt  = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
57     jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
58     jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
59
60     TF1 *fScale = new TF1("fScale","[0]",0.,100.);
61     fScale->SetParameter(0,scaleFact);
62     TString rhoSparseName = Form("RhoSparseR%03d",(int)(100*R));
63     rhoTask = AddTaskRhoSparse(jetFinderKt->GetName(),
64                                jetFinderAKt->GetName(),
65                                kTracksName.Data(),
66                                kClusName.Data(),
67                                rhoSparseName.Data(),
68                                R,
69                                "TPC",
70                                0.01,
71                                0.15,
72                                0,
73                                fScale,
74                                0,
75                                kTRUE,
76                                rhoSparseName.Data(),
77                                kTRUE
78                                );
79     rhoTask->SetCentralityEstimator(CentEst);
80  
81   }
82   TString wagonName = Form("DiJet_%s_%s_Rho%dTC%sMatch%dHadTrig%d",strJetsFull.Data(),strJetsCh.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias));
83
84   //Configure DiJet task
85   AliAnalysisTaskEmcalDiJetAna *taskDiJet = NULL;
86   taskDiJet = new AliAnalysisTaskEmcalDiJetAna(wagonName.Data());
87
88   taskDiJet->SetUseAliAnaUtils(kTRUE);
89   taskDiJet->SetVzRange(-10.,10.);
90   taskDiJet->SetTriggerClass(trigClass.Data());
91
92   if(ptminTrack==0.) {
93     taskDiJet->SetIsPythia(kTRUE);
94     taskDiJet->SetDoFullFull(kTRUE);
95   }
96   taskDiJet->SetJetCorrelationType(corrType);
97
98
99   Printf("strJetsFull: %s",strJetsFull.Data());
100   Printf("strJetsCh: %s",strJetsCh.Data());
101
102   taskDiJet->AddParticleContainer(kTracksName.Data());
103   taskDiJet->AddClusterContainer(kClusName.Data());
104    
105   taskDiJet->SetContainerFull(0);
106   taskDiJet->SetContainerCharged(1);
107   taskDiJet->AddJetContainer(strJetsFull.Data(),"EMCAL",R);
108   taskDiJet->AddJetContainer(strJetsCh.Data(),"TPC",R);
109
110   taskDiJet->SetZLeadingCut(0.98,0.98,0);
111   taskDiJet->SetNEFCut(0.,nefCut,0);
112
113   for(Int_t i=0; i<2; i++) {
114     taskDiJet->SetPercAreaCut(0.6, i);
115     taskDiJet->SetPtBiasJetTrack(ptTrackBias,i);
116   }
117
118   taskDiJet->SetRhoType(rhoType);
119   if(rhoType==1) {
120     taskDiJet->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
121     taskDiJet->SetRhoName(rhoTask->GetOutRhoName(),1);
122   }
123
124   taskDiJet->SetCentralityEstimator(CentEst);
125   taskDiJet->SetCentRange(0.,100.);
126   taskDiJet->SetNCentBins(nCentBins);
127
128   taskDiJet->SelectCollisionCandidates(pSel);
129
130   taskDiJet->SetFullChargedMatchingType(matchFullCh);
131
132   taskDiJet->SetDoChargedCharged(kTRUE);
133   taskDiJet->SetDoFullCharged(kTRUE);
134   taskDiJet->SetMatchFullCharged(kFALSE);
135
136   mgr->AddTask(taskDiJet);
137
138   //Connnect input
139   mgr->ConnectInput (taskDiJet, 0, mgr->GetCommonInputContainer() );
140
141   //Connect output
142   AliAnalysisDataContainer *coutput1 = 0x0;
143
144   TString contName(wagonName);
145   contName += "_histos";
146
147   //  TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
148   TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
149
150   coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
151
152   mgr->ConnectOutput(taskDiJet,1,coutput1);
153   
154   return taskDiJet;
155 }