]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fixing the PID part (Alis Rodriguez Manso)
authorpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 Feb 2012 22:03:37 +0000 (22:03 +0000)
committerpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 Feb 2012 22:03:37 +0000 (22:03 +0000)
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBF.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBF.h
PWGCF/EBYE/macros/AddTaskBalanceCentralityTrain.C

index 40e0d7a0f8da69a1fe5155f52b9191e538668311..6e75e91df8d7d3375344c5a9f34b89b733787954 100755 (executable)
@@ -292,40 +292,43 @@ void AliAnalysisTaskBF::UserCreateOutputObjects() {
 \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
@@ -364,7 +367,11 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
   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
@@ -455,11 +462,11 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
                      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
@@ -515,19 +522,19 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
                        //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
index f87258a4549f7fa036945c946d6a51ed7f0ebb7d..3c3dac6395e0f42ff6624beea90154e746e1cfe5 100755 (executable)
@@ -19,8 +19,6 @@ class AliESDtrackCuts;
 #include "AliPIDResponse.h"\r
 #include "AliPIDCombined.h"\r
  \r
-enum kDetectorUsedForPID { kTPCpid, kTOFpid, kTPCTOF }; // default TPC & TOF pid (via GetTPCpid & GetTOFpid)  \r
-enum kParticleOfInterest { kMuon, kElectron, kPion, kKaon, kProton };  \r
 \r
 class AliAnalysisTaskBF : public AliAnalysisTaskSE {\r
  public:\r
@@ -115,6 +113,9 @@ class AliAnalysisTaskBF : public AliAnalysisTaskSE {
     fAcceptanceParameterization = parameterization;}\r
 \r
   //pid\r
+  enum kDetectorUsedForPID { kTPCpid, kTOFpid, kTPCTOF }; // default TPC & TOF pid (via GetTPCpid & GetTOFpid)  \r
+  enum kParticleOfInterest { kMuon, kElectron, kPion, kKaon, kProton };  \r
+\r
   void SetUseBayesianPID(Double_t gMinProbabilityValue) {\r
     fUsePID = kTRUE; fUsePIDPropabilities = kTRUE;\r
     fMinAcceptedPIDProbability = gMinProbabilityValue; }\r
index 801fd0448d0d3c8f048502283ef289a73a646eaf..19b917123564cc7ba5be01d146a388e1c381602e 100644 (file)
@@ -13,8 +13,6 @@ Bool_t kUseNSigmaPID = kFALSE;
 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
@@ -123,8 +121,8 @@ AliAnalysisTaskBF *AddTaskBalanceCentralityTrain(Double_t centrMin=0.,
        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
@@ -167,11 +165,14 @@ AliAnalysisTaskBF *AddTaskBalanceCentralityTrain(Double_t centrMin=0.,
   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