1 AliAnalysisTaskSpectraBoth* AddTaskSpectraBoth(Bool_t mc=kFALSE,
\r
2 Double_t CentCutMin=0,
\r
3 Double_t CentCutMax=100,
\r
4 Double_t QvecCutMin=0,
\r
5 Double_t QvecCutMax=100,
\r
6 Double_t EtaMin=-0.8,
\r
8 Double_t Nsigmapid=3.,
\r
13 Double_t ptTofMatch=.6,
\r
15 UInt_t trkbitQVector=1,
\r
16 Bool_t UseCentPatchAOD049=kFALSE,
\r
17 Double_t DCA=100000,
\r
18 UInt_t minNclsTPC=70,
\r
20 TString centestimator="V0M",
\r
22 Float_t tpcshift=0.0,
\r
23 Float_t tofshift=0.0){
\r
25 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
\r
28 ::Error("AddAliAnalysisTaskSpectraAOD", "No analysis manager to connect to.");
\r
32 // Check the analysis type using the event handlers connected to the analysis manager.
\r
33 //==============================================================================
\r
34 if (!mgr->GetInputEventHandler())
\r
36 ::Error("AddTaskITSsaTracks", "This task requires an input event handler");
\r
40 TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
\r
41 // if(type.Contains("ESD"))
\r
43 // ::Error("AddTaskITSsaTracks", "This task requires to run on AOD");
\r
47 using namespace AliSpectraNameSpaceBoth;
\r
49 TString opt=Form("Est_%s_Pid_%d_Y%.1fto%.1f", centestimator.Data(),pidmethod,ymin,ymax);
\r
50 AliSpectraBothPID *pid = new AliSpectraBothPID();
\r
51 pid->SetNSigmaCut(Nsigmapid);
\r
52 pid->SetShiftTPC(tpcshift);
\r
53 pid->SetShiftTOF(tofshift);
\r
55 pid->SetPIDtype(AliSpectraBothPID::kNSigmaTPC);
\r
56 else if (pidmethod==1)
\r
57 pid->SetPIDtype(AliSpectraBothPID::kNSigmaTOF);
\r
59 pid->SetPIDtype(AliSpectraBothPID::kNSigmaTPCTOF);
\r
61 AliSpectraBothTrackCuts * trcuts = new AliSpectraBothTrackCuts("Track Cuts");
\r
62 trcuts->SetDCA(DCA);
\r
63 trcuts->SetTrackBits(trkbit);
\r
66 trcuts->SetY(ymax,ymin);
\r
67 trcuts->SetPtTOFMatching(ptTofMatch);
\r
68 trcuts->SetEta(EtaMin,EtaMax);
\r
69 trcuts->SetMinTPCcls(minNclsTPC);
\r
70 trcuts->PrintCuts();
\r
72 AliSpectraBothEventCuts * evcuts = new AliSpectraBothEventCuts("Event Cuts");
\r
73 evcuts->SetQVectorCut(QvecCutMin,QvecCutMax);
\r
74 evcuts->SetCentralityCutMax(CentCutMax);
\r
75 evcuts->SetCentralityCutMin(CentCutMin);
\r
76 evcuts->SetTrackBits(trkbitQVector);
\r
77 evcuts->SetCentEstimator(centestimator);
\r
78 if(mc==1)evcuts->SetIsMC(kTRUE);
\r
79 evcuts->PrintCuts();
\r
81 AliAnalysisTaskSpectraBoth *task = new AliAnalysisTaskSpectraBoth(Form("TaskBothSpectraCent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_%.1fSigmaPID_TrBit%d%s",
\r
92 task->SetEventCuts(evcuts);
\r
93 task->SetTrackCuts(trcuts);
\r
94 task->SetNRebin(nrebin);
\r
95 if(mc==1)task->SetIsMC(kTRUE);
\r
97 TString outputFileName = AliAnalysisManager::GetCommonFileName();
\r
99 TString typeofdata=mc?"MC":"Data";
\r
100 outputFileName += Form(":OutputBothSpectraTask_%s_Cent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_%.1fSigmaPID_TrBit%d%s",typeofdata.Data(),evcuts->GetCentralityMin(),evcuts->GetCentralityMax(),evcuts->GetQVectorCutMin(), evcuts->GetQVectorCutMax(),trcuts->GetEtaMin(),trcuts->GetEtaMax(),pid->GetNSigmaCut(),trcuts->GetTrackType(),opt.Data());
\r
102 TString tmpstring= Form("OutputBothSpectraTask_%s_Cent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_%.1fSigmaPID_TrBit%d%s",typeofdata.Data(),evcuts->GetCentralityMin(),evcuts->GetCentralityMax(),evcuts->GetQVectorCutMin(), evcuts->GetQVectorCutMax(),trcuts->GetEtaMin(),trcuts->GetEtaMax(),pid->GetNSigmaCut(),trcuts->GetTrackType(),opt.Data());
\r
104 cout<<"outputFileName: "<<outputFileName<<endl;
\r
105 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
\r
106 AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("%schistpt",tmpstring.Data()), AliSpectraBothHistoManager::Class(), AliAnalysisManager::kOutputContainer,outputFileName);
\r
107 AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("%scvcutpt",tmpstring.Data()), AliSpectraBothEventCuts::Class(), AliAnalysisManager::kOutputContainer,outputFileName);
\r
108 AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("%sctcutpt",tmpstring.Data()), AliSpectraBothTrackCuts::Class(), AliAnalysisManager::kOutputContainer, outputFileName);
\r
109 AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("%scpidpt",tmpstring.Data()), AliSpectraBothPID::Class(), AliAnalysisManager::kOutputContainer,outputFileName);
\r
111 mgr->ConnectInput(task, 0, cinput);
\r
112 mgr->ConnectOutput(task, 1, coutputpt1);
\r
113 mgr->ConnectOutput(task, 2, coutputpt2);
\r
114 mgr->ConnectOutput(task, 3, coutputpt3);
\r
115 mgr->ConnectOutput(task, 4, coutputpt4);
\r
117 mgr->AddTask(task);
\r