]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalDiJetAna.C
Add protection against ghostArea==0
[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              = 0.95,
14                                                    Int_t       nCentBins           = 5,
15                                                    Double_t    scaleFact           = 1.42
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
42   TString strJetsFull = jetFinderTaskFull->GetName();
43   TString strJetsCh   = jetFinderTaskCharged->GetName();
44
45   // Add kt jet finder and rho task in case we want background subtraction
46   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
47   AliEmcalJetTask *jetFinderKt;
48   AliEmcalJetTask *jetFinderAKt;
49   AliAnalysisTaskRhoSparse *rhoTask;
50   if(rhoType==1) {
51     jetFinderKt   = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus);
52     jetFinderKt->SetMinJetPt(0.);
53     jetFinderAKt  = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
54     
55     TF1 *fScale = new TF1("fScale","[0]",0.,100.);
56     fScale->SetParameter(0,scaleFact);
57     TString rhoSparseName = Form("RhoSparseR%03d",(int)(100*R));
58     rhoTask = AddTaskRhoSparse(jetFinderKt->GetName(),
59                                jetFinderAKt->GetName(),
60                                kTracksName.Data(),
61                                kClusName.Data(),
62                                rhoSparseName.Data(),
63                                R,
64                                "TPC",
65                                0.01,
66                                0.15,
67                                0,
68                                fScale,
69                                0,
70                                kTRUE,
71                                rhoSparseName.Data(),
72                                kTRUE
73                                );
74     rhoTask->SetCentralityEstimator(CentEst);
75  
76   }
77   TString wagonName = Form("DiJet_%s_%s_Rho%dTC%sMatch%dHadTrig%d",strJetsFull.Data(),strJetsCh.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias));
78
79   //Configure DiJet task
80   AliAnalysisTaskEmcalDiJetAna *taskDiJet = NULL;
81   taskDiJet = new AliAnalysisTaskEmcalDiJetAna(wagonName.Data());
82
83   taskDiJet->SetUseAliAnaUtils(kTRUE);
84   taskDiJet->SetTriggerClass(trigClass.Data());
85
86   if(ptminTrack==0.) {
87     taskDiJet->SetIsPythia(kTRUE);
88     taskDiJet->SetDoFullFull(kTRUE);
89   }
90   taskDiJet->SetJetCorrelationType(corrType);
91
92
93   Printf("strJetsFull: %s",strJetsFull.Data());
94   Printf("strJetsCh: %s",strJetsCh.Data());
95
96   taskDiJet->AddParticleContainer(kTracksName.Data());
97   taskDiJet->AddClusterContainer(kClusName.Data());
98    
99   taskDiJet->SetContainerFull(0);
100   taskDiJet->SetContainerCharged(1);
101   taskDiJet->AddJetContainer(strJetsFull.Data(),"EMCAL",R);
102   taskDiJet->AddJetContainer(strJetsCh.Data(),"TPC",R);
103
104   taskDiJet->SetZLeadingCut(0.98,0.98,0);
105   taskDiJet->SetNEFCut(0.,nefCut,0);
106
107   for(Int_t i=0; i<2; i++) {
108     taskDiJet->SetPercAreaCut(0.6, i);
109     taskDiJet->SetPtBiasJetTrack(ptTrackBias,i);
110   }
111
112   taskDiJet->SetRhoType(rhoType);
113   if(rhoType==1) {
114     taskDiJet->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
115     taskDiJet->SetRhoName(rhoTask->GetOutRhoName(),1);
116   }
117
118   taskDiJet->SetCentralityEstimator(CentEst);
119   taskDiJet->SetCentRange(0.,100.);
120   taskDiJet->SetNCentBins(nCentBins);
121
122   taskDiJet->SelectCollisionCandidates(pSel);
123
124   taskDiJet->SetFullChargedMatchingType(matchFullCh);
125
126   taskDiJet->SetDoChargedCharged(kTRUE);
127   taskDiJet->SetDoFullCharged(kTRUE);
128   taskDiJet->SetMatchFullCharged(kFALSE);
129
130   mgr->AddTask(taskDiJet);
131
132   //Connnect input
133   mgr->ConnectInput (taskDiJet, 0, mgr->GetCommonInputContainer() );
134
135   //Connect output
136   AliAnalysisDataContainer *coutput1 = 0x0;
137
138   TString contName(wagonName);
139   contName += "_histos";
140
141   //  TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
142   TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
143
144   coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
145
146   mgr->ConnectOutput(taskDiJet,1,coutput1);
147   
148   return taskDiJet;
149 }