\r
//====================PID========================//\r
if(fUsePID) {\r
- fHistdEdxVsPTPCbeforePID = new TH2D ("dEdxVsPTPCbefore","dEdxVsPTPCbefore", 1000, -50, 50, 1000, 0, 100); \r
+ fPIDCombined = new AliPIDCombined();\r
+ fPIDCombined->SetDefaultTPCPriors();\r
+\r
+ fHistdEdxVsPTPCbeforePID = new TH2D ("dEdxVsPTPCbefore","dEdxVsPTPCbefore", 1000, -10.0, 10.0, 1000, 0, 1000); \r
fHistListPIDQA->Add(fHistdEdxVsPTPCbeforePID); //addition \r
\r
- fHistBetavsPTOFbeforePID = new TH2D ("BetavsPTOFbefore","BetavsPTOFbefore", 1000, -50, 50, 1000, 0, 1.2); \r
+ fHistBetavsPTOFbeforePID = new TH2D ("BetavsPTOFbefore","BetavsPTOFbefore", 1000, -10.0, 10., 1000, 0, 1.2); \r
fHistListPIDQA->Add(fHistBetavsPTOFbeforePID); //addition\r
\r
- fHistProbTPCvsPtbeforePID = new TH2D ("ProbTPCvsPtbefore","ProbTPCvsPtbefore", 1000, -50, 50, 1000, 0, 100); \r
+ fHistProbTPCvsPtbeforePID = new TH2D ("ProbTPCvsPtbefore","ProbTPCvsPtbefore", 1000, -10.0,10.0, 1000, 0, 100); \r
fHistListPIDQA->Add(fHistProbTPCvsPtbeforePID); //addition \r
\r
fHistProbTOFvsPtbeforePID = new TH2D ("ProbTOFvsPtbefore","ProbTOFvsPtbefore", 1000, -50, 50, 1000, 0, 100); \r
fHistListPIDQA->Add(fHistProbTOFvsPtbeforePID); //addition \r
\r
- fHistNSigmaTPCvsPtbeforePID = new TH2D ("NSigmaTPCvsPtbefore","NSigmaTPCvsPtbefore", 1000, -50, 50, 1000, 0, 100); \r
+ fHistNSigmaTPCvsPtbeforePID = new TH2D ("NSigmaTPCvsPtbefore","NSigmaTPCvsPtbefore", 1000, -10, 10, 1000, 0, 500); \r
fHistListPIDQA->Add(fHistNSigmaTPCvsPtbeforePID); //addition \r
\r
- fHistNSigmaTOFvsPtbeforePID = new TH2D ("NSigmaTOFvsPtbefore","NSigmaTOFvsPtbefore", 1000, -50, 50, 1000, 0, 100); \r
+ fHistNSigmaTOFvsPtbeforePID = new TH2D ("NSigmaTOFvsPtbefore","NSigmaTOFvsPtbefore", 1000, -10, 10, 1000, 0, 500); \r
fHistListPIDQA->Add(fHistNSigmaTOFvsPtbeforePID); //addition \r
\r
- fHistdEdxVsPTPCafterPID = new TH2D ("dEdxVsPTPCafter","dEdxVsPTPCafter", 1000, -50, 50, 1000, 0, 100); \r
+ fHistdEdxVsPTPCafterPID = new TH2D ("dEdxVsPTPCafter","dEdxVsPTPCafter", 1000, -10, 10, 1000, 0, 1000); \r
fHistListPIDQA->Add(fHistdEdxVsPTPCafterPID); //addition \r
\r
- fHistBetavsPTOFafterPID = new TH2D ("BetavsPTOFafter","BetavsPTOFafter", 1000, -50, 50, 1000, 0, 1.2); \r
+ fHistBetavsPTOFafterPID = new TH2D ("BetavsPTOFafter","BetavsPTOFafter", 1000, -10, 10, 1000, 0, 1.2); \r
fHistListPIDQA->Add(fHistBetavsPTOFafterPID); //addition \r
\r
- fHistProbTPCvsPtafterPID = new TH2D ("ProbTPCvsPtafter","ProbTPCvsPtafter", 1000, -50, 50, 1000, 0, 100); \r
+ fHistProbTPCvsPtafterPID = new TH2D ("ProbTPCvsPtafter","ProbTPCvsPtafter", 1000, -10, 10, 1000, 0, 2); \r
fHistListPIDQA->Add(fHistProbTPCvsPtafterPID); //addition \r
\r
- fHistProbTOFvsPtafterPID = new TH2D ("ProbTOFvsPtafter","ProbTOFvsPtafter", 1000, -50, 50, 1000, 0, 100); \r
+ fHistProbTOFvsPtafterPID = new TH2D ("ProbTOFvsPtafter","ProbTOFvsPtafter", 1000, -10, 10, 1000, 0, 2); \r
fHistListPIDQA->Add(fHistProbTOFvsPtafterPID); //addition \r
\r
- fHistNSigmaTPCvsPtafterPID = new TH2D ("NSigmaTPCvsPtafter","NSigmaTPCvsPtafter", 1000, -50, 50, 1000, 0, 100); \r
+ fHistNSigmaTPCvsPtafterPID = new TH2D ("NSigmaTPCvsPtafter","NSigmaTPCvsPtafter", 1000, -10, 10, 1000, 0, 500); \r
fHistListPIDQA->Add(fHistNSigmaTPCvsPtafterPID); //addition \r
\r
- fHistNSigmaTOFvsPtafterPID = new TH2D ("NSigmaTOFvsPtafter","NSigmaTOFvsPtafter", 1000, -50, 50, 1000, 0, 100); \r
+ fHistNSigmaTOFvsPtafterPID = new TH2D ("NSigmaTOFvsPtafter","NSigmaTOFvsPtafter", 1000, -10, 10, 1000, 0, 500); \r
fHistListPIDQA->Add(fHistNSigmaTOFvsPtafterPID); //addition \r
}\r
//====================PID========================//\r
Double_t v_pt;\r
Double_t v_E;\r
\r
-\r
+ if(fUsePID) {\r
+ fPIDResponse = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->GetPIDResponse();\r
+ if (!fPIDResponse) AliFatal("This Task needs the PID response attached to the inputHandler");\r
+ }\r
+ \r
//ESD analysis\r
if(gAnalysisLevel == "ESD") {\r
AliESDEvent* gESD = dynamic_cast<AliESDEvent*>(InputEvent()); // from TaskSE\r
switch(fPidDetectorConfig) {\r
case kTPCpid:\r
fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC);\r
- nSigma = fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType)fParticleOfInterest);\r
+ nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType)fParticleOfInterest));\r
break;\r
case kTOFpid:\r
fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF);\r
- nSigma = fPIDResponse->NumberOfSigmasTOF(track,(AliPID::EParticleType)fParticleOfInterest);\r
+ nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(track,(AliPID::EParticleType)fParticleOfInterest));\r
break;\r
case kTPCTOF:\r
fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC);\r
//Make the decision based on the bayesian\r
else if(fUsePIDPropabilities) {\r
if(fParticleOfInterest != TMath::LocMax(AliPID::kSPECIES,prob)) continue;\r
- if (prob[fParticleOfInterest]< fMinAcceptedPIDProbability) continue; \r
+ if (prob[fParticleOfInterest] < fMinAcceptedPIDProbability) continue; \r
}\r
+ \r
+ //Fill QA after the PID\r
+ fHistBetavsPTOFafterPID ->Fill(track->P()*track->Charge(),beta);\r
+ fHistProbTOFvsPtafterPID ->Fill(track->Pt(),prob[fParticleOfInterest]);\r
+ fHistNSigmaTOFvsPtafterPID ->Fill(track->Pt(),nSigmaTOFForParticleOfInterest);\r
+ \r
+ fHistdEdxVsPTPCafterPID -> Fill(track->P()*track->Charge(),track->GetTPCsignal());\r
+ fHistProbTPCvsPtafterPID -> Fill(track->Pt(),prob[fParticleOfInterest]); \r
+ fHistNSigmaTPCvsPtafterPID -> Fill(track->Pt(),nSigmaTPCForParticleOfInterest); \r
}\r
\r
- //Fill QA after the PID\r
- fHistBetavsPTOFafterPID ->Fill(track->P()*track->Charge(),beta);\r
- fHistProbTOFvsPtafterPID ->Fill(track->Pt(),prob[fParticleOfInterest]);\r
- fHistNSigmaTOFvsPtafterPID ->Fill(track->Pt(),nSigmaTOFForParticleOfInterest);\r
- \r
- fHistdEdxVsPTPCafterPID -> Fill(track->P()*track->Charge(),track->GetTPCsignal());\r
- fHistProbTPCvsPtafterPID -> Fill(track->Pt(),prob[fParticleOfInterest]); \r
- fHistNSigmaTPCvsPtafterPID -> Fill(track->Pt(),nSigmaTPCForParticleOfInterest); \r
- \r
PostData(4, fHistListPIDQA);\r
}\r
//===========================PID===============================//\r
Double_t nSigmaMax = 3.0;\r
Bool_t kUseBayesianPID = kTRUE;\r
Double_t gMinAcceptedProbability = 0.7;\r
-kDetectorUsedForPID pidMethod = AliAnalysisTaskBF::kTPCTOF;\r
-kParticleOfInterest particleOfInterest = AliAnalysisTaskBF::kPion;\r
\r
//_________________________________________________________//\r
AliAnalysisTaskBF *AddTaskBalanceCentralityTrain(Double_t centrMin=0.,\r
taskBF->SetUseBayesianPID(gMinAcceptedProbability);\r
else if(kUseNSigmaPID)\r
taskBF->SetUseNSigmaPID(nSigmaMax);\r
- taskBF->SetParticleOfInterest(particleOfInterest);\r
- taskBF->SetDetectorUsedForPID(pidMethod);\r
+ taskBF->SetParticleOfInterest(AliAnalysistaskBF::kProton);\r
+ taskBF->SetDetectorUsedForPID(AliAnalysisTaskBF::kTOFpid);\r
}\r
}\r
else if(analysisType == "AOD") {\r
outputFileName += ":PWGCFEbyE.outputBalanceFunctionAnalysis";\r
AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r
AliAnalysisDataContainer *coutBF = mgr->CreateContainer(Form("listBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r
- if(gRunShuffling) AliAnalysisDataContainer *coutBFS= mgr->CreateContainer(Form("listBFShuffled_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r
+ if(gRunShuffling) AliAnalysisDataContainer *coutBFS = mgr->CreateContainer(Form("listBFShuffled_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r
+ if(kUsePID) AliAnalysisDataContainer *coutQAPID = mgr->CreateContainer(Form("listQAPID_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r
+\r
mgr->ConnectInput(taskBF, 0, mgr->GetCommonInputContainer());\r
mgr->ConnectOutput(taskBF, 1, coutQA);\r
mgr->ConnectOutput(taskBF, 2, coutBF);\r
if(gRunShuffling) mgr->ConnectOutput(taskBF, 3, coutBFS);\r
+ if(kUsePID) mgr->ConnectOutput(taskBF, 4, coutQAPID);\r
\r
return taskBF;\r
}\r