-// $Id$\r
-\r
-AliAnalysisTaskFlavourJetCorrelations *AddTaskFlavourJetCorrelations(\r
- AliAnalysisTaskRecoJetCorrelations::ECandidateType cand = AliAnalysisTaskRecoJetCorrelations::kDstartoKpipi,\r
- TString filename = "DStartoKpipiCuts.root",\r
- Bool_t theMCon = kFALSE,\r
- TString jetArrname = "",\r
- TString suffix = "",\r
- Bool_t triggerOnLeadingJet = kFALSE,\r
- Float_t R = 0.4,\r
- Float_t jptcut = 10.,\r
- Int_t acceptance = 1 /*1= 0-2pi, 2=emcal cut*/,\r
- Double_t areaCut = 0.)\r
-{\r
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
- if (!mgr) {\r
- ::Error("AddTaskFlavourJetCorrelations::AddTaskFlavourJetCorrelations", "No analysis manager to connect to.");\r
- return NULL;\r
- } \r
-\r
- Bool_t useStdC = kFALSE;\r
- TFile* filecuts=TFile::Open(filename);\r
- if (!filecuts || (filecuts && !filecuts->IsOpen())) {\r
- cout<<"Input file not found: use std cuts"<<endl;\r
- useStdC = kTRUE;\r
- }\r
-\r
- AliRDHFCuts *analysiscuts = 0x0;\r
- switch (cand) {\r
- case 0 :\r
- if (useStdC) {\r
- analysiscuts = new AliRDHFCutsD0toKpi();\r
- analysiscuts->SetStandardCutsPP2010();\r
- } else\r
- analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");\r
- break;\r
- case 1 :\r
- if(useStdC) {\r
- analysiscuts = new AliRDHFCutsDStartoKpipi();\r
- analysiscuts->SetStandardCutsPP2010();\r
- } else\r
- analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");\r
- analysiscuts->SetName("DStartoKpipiCuts");\r
- break;\r
- }\r
- \r
- if (!analysiscuts) { // mm let's see if everything is ok\r
- AliFatal("Specific AliRDHFCuts not found");\r
- return;\r
- }\r
-\r
- printf("CREATE TASK\n"); //CREATE THE TASK\r
-\r
- // create the task\r
- AliAnalysisTaskFlavourJetCorrelations *task = new AliAnalysisTaskFlavourJetCorrelations("AnaTaskFlavourJetCorrelations", analysiscuts, cand, jetArrname);\r
-\r
- //D meson settings\r
- task->SetMC(theMCon);\r
- task->SetTriggerOnLeadingJet(triggerOnLeadingJet);\r
-\r
- //jet settings\r
- task->SetJetRadius(R);\r
- task->SetJetPtCut(jptcut);\r
-\r
- Float_t etaCov=0.9;\r
- if (acceptance==2) etaCov=0.7; //EMCal\r
-\r
- Float_t minEta = -etaCov+R;\r
- Float_t maxEta = etaCov-R;\r
- if (acceptance) task->SetJetEtaLimits(minEta, maxEta);\r
-\r
- Float_t minPhi = 0.;\r
- Float_t maxPhi = 2.*TMath::Pi();\r
-//if (acceptance==2) { /*80-180 degree*/ }\r
- if (acceptance) task->SetJetPhiLimits(minPhi, maxPhi);\r
-\r
- //Float_t area=0.6*TMath::Pi()*R*R;\r
- task->SetJetAreaCut(areaCut);\r
- mgr->AddTask(task);\r
-\r
- // Create and connect containers for input/output\r
- TString outputfile = AliAnalysisManager::GetCommonFileName();\r
- outputfile += ":PWG3_D2H_DEmcalJet";\r
- outputfile += suffix;\r
-\r
- TString nameContainer0="histogramsCorrelations";\r
- TString nameContainer1="cuts";\r
-\r
- nameContainer0 += suffix;\r
- nameContainer1 += suffix;\r
-\r
- // ------ input data ------\r
- AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();\r
-\r
- // ----- output data -----\r
-\r
- // output TH1I for event counting\r
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(nameContainer0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());\r
- AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(nameContainer1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());\r
-\r
- mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());\r
- mgr->ConnectOutput(task,1,coutput1);\r
- mgr->ConnectOutput(task,2,coutput2);\r
-\r
- Printf("Input and Output connected to the manager");\r
- return task ;\r
-}\r
+AliAnalysisTaskFlavourJetCorrelations *AddTaskFlavourJetCorrelations(
+ AliAnalysisTaskFlavourJetCorrelations::ECandidateType cand = AliAnalysisTaskFlavourJetCorrelations::kDstartoKpipi,
+ TString filename = "DStartoKpipiCuts.root",
+ Bool_t theMCon = kFALSE,
+ Bool_t reco = kTRUE /*must be true if theMCon is false*/,
+ TString jetArrname = "",
+ TString suffix = "",
+ Bool_t triggerOnLeadingJet = kFALSE,
+ Int_t leadingHadType = 0 /*0 = charged, 1 = neutral, 2 = both*/,
+ Float_t R = 0.4,
+ Float_t jptcut = 10.,
+ const char *cutType = "TPC",
+ Double_t percjetareacut = 1.)
+{
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr) {
+ ::Error("AddTaskFlavourJetCorrelations::AddTaskFlavourJetCorrelations", "No analysis manager to connect to.");
+ return NULL;
+ }
+
+ Bool_t useStdC = kFALSE;
+ TFile* filecuts=TFile::Open(filename);
+ if (!filecuts || (filecuts && !filecuts->IsOpen())) {
+ cout<<"Input file not found: use std cuts"<<endl;
+ useStdC = kTRUE;
+ }
+
+ AliRDHFCuts *analysiscuts = 0x0;
+ switch (cand) {
+ case 0 :
+ if (useStdC) {
+ analysiscuts = new AliRDHFCutsD0toKpi();
+ analysiscuts->SetStandardCutsPP2010();
+ } else
+ analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
+ break;
+ case 1 :
+ if(useStdC) {
+ analysiscuts = new AliRDHFCutsDStartoKpipi();
+ analysiscuts->SetStandardCutsPP2010();
+ } else
+ analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
+ analysiscuts->SetName("DStartoKpipiCuts");
+ break;
+ }
+
+ if (!analysiscuts) { // mm let's see if everything is ok
+ AliFatal("Specific AliRDHFCuts not found");
+ return;
+ }
+
+ printf("CREATE TASK\n"); //CREATE THE TASK
+
+ // create the task
+ AliAnalysisTaskFlavourJetCorrelations *task = new AliAnalysisTaskFlavourJetCorrelations("AnaTaskFlavourJetCorrelations",
+ analysiscuts, cand);
+ task->SetJetsName(jetArrname);
+ task->SetMC(theMCon);
+ task->SetUseReco(reco);
+ task->SetTriggerOnLeadingJet(triggerOnLeadingJet);
+ task->SetJetAcceptanceType(cutType);
+ task->SetJetPtCut(jptcut);
+ task->SetPercAreaCut(percjetareacut);
+
+ mgr->AddTask(task);
+
+ if(theMCon) {
+ suffix+="MC";
+ if(reco) suffix+="rec";
+ }
+
+ // Create and connect containers for input/output
+ TString outputfile = AliAnalysisManager::GetCommonFileName();
+ outputfile += ":PWG3_D2H_DEmcalJet";
+ outputfile += suffix;
+
+ TString candname="DStar";
+ if(cand==0) candname="D0";
+
+ TString nameContainer1="hCor";
+ TString nameContainer2="cutsJ";
+
+ nameContainer1 += candname;
+ nameContainer2 += candname;
+
+ nameContainer1 += suffix;
+ nameContainer2 += suffix;
+ // ------ input data ------
+ AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
+
+ // ----- output data -----
+ AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(nameContainer1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
+ AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(nameContainer2, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());
+
+ mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(task,1,coutput1);
+ mgr->ConnectOutput(task,2,coutput2);
+
+
+ Printf("Input and Output connected to the manager");
+ return task ;
+}