ROOT logo
AliAnalysisTaskDiHadronPID* AddTaskDiHadronPIDpp( // for AOD113 2.76TeV
	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 = 10.,
	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,
	Int_t FilterMaskTrigger = 7,
	Int_t FilterMaskAssociated = 5,
	Bool_t isPbPb = kFALSE,
	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.,
	Bool_t ExtendPtAxis = 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<<"AddTaskDiHadronPIDpp.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);
    DiHadronPIDTask->SetExtendPtAxis(ExtendPtAxis);

    // 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->SetDemandContributorsOrSPDVertex();
	eventcuts->SetDebugLevel(DebugLevel);
	DiHadronPIDTask->SetEventCuts(eventcuts);

	// Configure and add track cuts for trigger.
	AliAODTrackCutsDiHadronPID* triggercuts = new AliAODTrackCutsDiHadronPID("TrackCutsTrigger");
	triggercuts->SetIsMC(isMC);
	triggercuts->SetFilterMask(1<<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(1<<FilterMaskAssociated);
	associatedscuts->SetPtRange(minAssociatedPt,maxAssociatedPt);
	associatedscuts->SetMaxEta(maxEta);
	// associatedscuts->SetMinimumNumberOfTPCClusters(70); // marek doestn do this
	associatedscuts->SetDemandSPDCluster();
	ULong_t associatedflags = (UInt_t)(AliAODTrack::kTPCrefit)|(UInt_t)(AliAODTrack::kITSrefit)|(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;

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