ROOT logo
AliAnalysisTaskDiHadronPID* AddTaskDiHadronPID(
	Int_t NDEtaBins = 32,
	Int_t NDPhiBins = 32,
	Int_t MinEventsForMixing = 5,
	Int_t PoolTrackDepth = 2000,
	Int_t PoolSize = 1000,
	Bool_t MixEvents = kTRUE,
	Bool_t MixTriggers = kTRUE,
	Double_t MinCentrality = 5.,
	Double_t MaxCentrality = 0.,
	const char* CentralityEstimator = "V0M",
	Double_t maxVertexZ = 7.,
	Double_t maxEta = 0.8,
	Double_t minAssociatedPt = 0.2,
	Double_t maxAssociatedPt = 5.0,
	Double_t minTriggerPt = 5.,
	Double_t maxTriggerPt = 10.,
	Bool_t requestAllSingleTrackHistos = kFALSE,
	UInt_t FilterMaskTrigger = 32,
	UInt_t FilterMaskAssociated = 32,
	Bool_t isPbPb = kTRUE,
	Bool_t isMC = kFALSE,
	Int_t DebugLevel = 0,
	Bool_t MakeTOFCorrelations = kTRUE,
	Bool_t MakeTOFTPCCorrelationsPi = kFALSE,
	Bool_t MakeTOFTPCCorrelationsKa = kFALSE,
	Bool_t MakeTOFTPCCorrelationsPr = kFALSE,		
	Double_t TOFIntervalFactorTOFTPC = 1.,
	Double_t fExtendPtAxis = kFALSE,
	const char* outputFileName = 0,
	const char* containerName = "DiHadronPID",
	const char* folderName = "PWGCF_DiHadronPID")

{
	// Get a pointer to the analysis manager.
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    if (!mgr) {
        cout<<"AddTaskDiHadronPID.C -> No analysis manager found."<<endl;
        return 0x0;
    }	

    // Create an instance of the task.
    AliAnalysisTaskDiHadronPID* DiHadronPIDTask = new AliAnalysisTaskDiHadronPID(containerName);

    // Configure the task.
    DiHadronPIDTask->SetNDEtaBins(NDEtaBins);
    DiHadronPIDTask->SetNDPhiBins(NDPhiBins);
    DiHadronPIDTask->SetMinEventsForMixing(MinEventsForMixing);
    DiHadronPIDTask->SetPoolTrackDepth(PoolTrackDepth);
    DiHadronPIDTask->SetPoolSize(PoolSize);
    DiHadronPIDTask->SetMixEvents(MixEvents);
    DiHadronPIDTask->SetMixTriggers(MixTriggers);
    DiHadronPIDTask->SetDebugLevel(DebugLevel);
    DiHadronPIDTask->SetMakeTOFCorrelations(MakeTOFCorrelations);
    DiHadronPIDTask->SetMakeTOFTPCCorrelationsPi(MakeTOFTPCCorrelationsPi);
    DiHadronPIDTask->SetMakeTOFTPCCorrelationsKa(MakeTOFTPCCorrelationsKa);
    DiHadronPIDTask->SetMakeTOFTPCCorrelationsPr(MakeTOFTPCCorrelationsPr);        
    DiHadronPIDTask->SetTOFIntervalFactorTOFTPC(TOFIntervalFactorTOFTPC);

    // Configure and add Event Cuts.
	AliAODEventCutsDiHadronPID* eventcuts = new AliAODEventCutsDiHadronPID("EventCuts");
	eventcuts->SetTrigger(AliVEvent::kMB);
	eventcuts->SetCentrality(MaxCentrality, MinCentrality);
	eventcuts->SetMaxVertexZ(maxVertexZ);
	eventcuts->SetCentralityEstimator(CentralityEstimator);
	eventcuts->SetIsPbPb(isPbPb);
	eventcuts->SetDebugLevel(DebugLevel);
	DiHadronPIDTask->SetEventCuts(eventcuts);

	// Configure and add track cuts for trigger.
	AliAODTrackCutsDiHadronPID* triggercuts = new AliAODTrackCutsDiHadronPID("TrackCutsTrigger");
	triggercuts->SetIsMC(isMC);
	triggercuts->SetFilterMask(FilterMaskTrigger);
	triggercuts->SetPtRange(minTriggerPt,maxTriggerPt);
	triggercuts->SetMaxEta(maxEta);
	triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllCharged);
	triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPositive);
	triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegative);
	if (requestAllSingleTrackHistos) {
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllPion);
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosPion);
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegPion);					
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllKaon);
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosKaon);
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegKaon);		
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllProton);
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosProton);
		triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegProton);
	}	
	triggercuts->SetDebugLevel(DebugLevel);
	DiHadronPIDTask->SetTrackCutsTrigger(triggercuts);

	// Configure and add track cuts for associateds.
	AliAODTrackCutsDiHadronPID* associatedscuts = new AliAODTrackCutsDiHadronPID("TrackCutsAssociated");
	associatedscuts->SetIsMC(isMC);
	associatedscuts->SetFilterMask(FilterMaskAssociated);
	associatedscuts->SetPtRange(minAssociatedPt,maxAssociatedPt);
	associatedscuts->SetMaxEta(maxEta);
	ULong_t associatedflags = (UInt_t)(AliAODTrack::kTOFout)|(UInt_t)(AliAODTrack::kTIME);	
	associatedscuts->SetDemandFlags(associatedflags);
	associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllCharged);
	associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPositive);
	associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegative);
	if (requestAllSingleTrackHistos) {
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllPion);
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosPion);
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegPion);					
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllKaon);
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosKaon);
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegKaon);		
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllProton);
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosProton);
		associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegProton);
	}
	associatedscuts->SetDebugLevel(DebugLevel);
	DiHadronPIDTask->SetTrackCutsAssociated(associatedscuts);

	// Add the task.
	mgr->AddTask(DiHadronPIDTask);
    
	// Data containers.
	AliAnalysisDataContainer* cinput  = mgr->GetCommonInputContainer();
	mgr->ConnectInput(DiHadronPIDTask, 0, cinput); 
	
	if (!outputFileName) {outputFileName = AliAnalysisManager::GetCommonFileName();}
	
	AliAnalysisDataContainer* coutput1 = mgr->CreateContainer(containerName, TList::Class(),
                         AliAnalysisManager::kOutputContainer,Form("%s:%s", outputFileName, folderName));
	
	mgr->ConnectOutput(DiHadronPIDTask,1,coutput1);
	
	return DiHadronPIDTask;

}
 AddTaskDiHadronPID.C:1
 AddTaskDiHadronPID.C:2
 AddTaskDiHadronPID.C:3
 AddTaskDiHadronPID.C:4
 AddTaskDiHadronPID.C:5
 AddTaskDiHadronPID.C:6
 AddTaskDiHadronPID.C:7
 AddTaskDiHadronPID.C:8
 AddTaskDiHadronPID.C:9
 AddTaskDiHadronPID.C:10
 AddTaskDiHadronPID.C:11
 AddTaskDiHadronPID.C:12
 AddTaskDiHadronPID.C:13
 AddTaskDiHadronPID.C:14
 AddTaskDiHadronPID.C:15
 AddTaskDiHadronPID.C:16
 AddTaskDiHadronPID.C:17
 AddTaskDiHadronPID.C:18
 AddTaskDiHadronPID.C:19
 AddTaskDiHadronPID.C:20
 AddTaskDiHadronPID.C:21
 AddTaskDiHadronPID.C:22
 AddTaskDiHadronPID.C:23
 AddTaskDiHadronPID.C:24
 AddTaskDiHadronPID.C:25
 AddTaskDiHadronPID.C:26
 AddTaskDiHadronPID.C:27
 AddTaskDiHadronPID.C:28
 AddTaskDiHadronPID.C:29
 AddTaskDiHadronPID.C:30
 AddTaskDiHadronPID.C:31
 AddTaskDiHadronPID.C:32
 AddTaskDiHadronPID.C:33
 AddTaskDiHadronPID.C:34
 AddTaskDiHadronPID.C:35
 AddTaskDiHadronPID.C:36
 AddTaskDiHadronPID.C:37
 AddTaskDiHadronPID.C:38
 AddTaskDiHadronPID.C:39
 AddTaskDiHadronPID.C:40
 AddTaskDiHadronPID.C:41
 AddTaskDiHadronPID.C:42
 AddTaskDiHadronPID.C:43
 AddTaskDiHadronPID.C:44
 AddTaskDiHadronPID.C:45
 AddTaskDiHadronPID.C:46
 AddTaskDiHadronPID.C:47
 AddTaskDiHadronPID.C:48
 AddTaskDiHadronPID.C:49
 AddTaskDiHadronPID.C:50
 AddTaskDiHadronPID.C:51
 AddTaskDiHadronPID.C:52
 AddTaskDiHadronPID.C:53
 AddTaskDiHadronPID.C:54
 AddTaskDiHadronPID.C:55
 AddTaskDiHadronPID.C:56
 AddTaskDiHadronPID.C:57
 AddTaskDiHadronPID.C:58
 AddTaskDiHadronPID.C:59
 AddTaskDiHadronPID.C:60
 AddTaskDiHadronPID.C:61
 AddTaskDiHadronPID.C:62
 AddTaskDiHadronPID.C:63
 AddTaskDiHadronPID.C:64
 AddTaskDiHadronPID.C:65
 AddTaskDiHadronPID.C:66
 AddTaskDiHadronPID.C:67
 AddTaskDiHadronPID.C:68
 AddTaskDiHadronPID.C:69
 AddTaskDiHadronPID.C:70
 AddTaskDiHadronPID.C:71
 AddTaskDiHadronPID.C:72
 AddTaskDiHadronPID.C:73
 AddTaskDiHadronPID.C:74
 AddTaskDiHadronPID.C:75
 AddTaskDiHadronPID.C:76
 AddTaskDiHadronPID.C:77
 AddTaskDiHadronPID.C:78
 AddTaskDiHadronPID.C:79
 AddTaskDiHadronPID.C:80
 AddTaskDiHadronPID.C:81
 AddTaskDiHadronPID.C:82
 AddTaskDiHadronPID.C:83
 AddTaskDiHadronPID.C:84
 AddTaskDiHadronPID.C:85
 AddTaskDiHadronPID.C:86
 AddTaskDiHadronPID.C:87
 AddTaskDiHadronPID.C:88
 AddTaskDiHadronPID.C:89
 AddTaskDiHadronPID.C:90
 AddTaskDiHadronPID.C:91
 AddTaskDiHadronPID.C:92
 AddTaskDiHadronPID.C:93
 AddTaskDiHadronPID.C:94
 AddTaskDiHadronPID.C:95
 AddTaskDiHadronPID.C:96
 AddTaskDiHadronPID.C:97
 AddTaskDiHadronPID.C:98
 AddTaskDiHadronPID.C:99
 AddTaskDiHadronPID.C:100
 AddTaskDiHadronPID.C:101
 AddTaskDiHadronPID.C:102
 AddTaskDiHadronPID.C:103
 AddTaskDiHadronPID.C:104
 AddTaskDiHadronPID.C:105
 AddTaskDiHadronPID.C:106
 AddTaskDiHadronPID.C:107
 AddTaskDiHadronPID.C:108
 AddTaskDiHadronPID.C:109
 AddTaskDiHadronPID.C:110
 AddTaskDiHadronPID.C:111
 AddTaskDiHadronPID.C:112
 AddTaskDiHadronPID.C:113
 AddTaskDiHadronPID.C:114
 AddTaskDiHadronPID.C:115
 AddTaskDiHadronPID.C:116
 AddTaskDiHadronPID.C:117
 AddTaskDiHadronPID.C:118
 AddTaskDiHadronPID.C:119
 AddTaskDiHadronPID.C:120
 AddTaskDiHadronPID.C:121
 AddTaskDiHadronPID.C:122
 AddTaskDiHadronPID.C:123
 AddTaskDiHadronPID.C:124
 AddTaskDiHadronPID.C:125
 AddTaskDiHadronPID.C:126
 AddTaskDiHadronPID.C:127
 AddTaskDiHadronPID.C:128
 AddTaskDiHadronPID.C:129
 AddTaskDiHadronPID.C:130
 AddTaskDiHadronPID.C:131
 AddTaskDiHadronPID.C:132
 AddTaskDiHadronPID.C:133
 AddTaskDiHadronPID.C:134
 AddTaskDiHadronPID.C:135