]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
PID AOD additions (Alis)
authorpchrista <pchrista@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Nov 2013 15:29:30 +0000 (15:29 +0000)
committerpchrista <pchrista@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Nov 2013 15:29:30 +0000 (15:29 +0000)
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBFPsi.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBFPsi.h
PWGCF/EBYE/macros/AddTaskBalanceEffCont.C
PWGCF/EBYE/macros/AddTaskBalancePsiCentralityTrain.C

index 35225310996dce8240909057546e4594d114c266..ce27276cbc016f354bbe9682dd1919eeed5c69ec 100755 (executable)
@@ -103,6 +103,8 @@ AliAnalysisTaskBFPsi::AliAnalysisTaskBFPsi(const char *name)
   fHistProbTPCTOFvsPtbeforePID(NULL),\r
   fHistNSigmaTPCvsPtbeforePID(NULL), \r
   fHistNSigmaTOFvsPtbeforePID(NULL), \r
+  fHistBetaVsdEdXbeforePID(NULL), //+++++++ \r
+  fHistNSigmaTPCTOFvsPtbeforePID(NULL), //++++++\r
   fHistdEdxVsPTPCafterPID(NULL),\r
   fHistBetavsPTOFafterPID(NULL), \r
   fHistProbTPCvsPtafterPID(NULL), \r
@@ -110,6 +112,8 @@ AliAnalysisTaskBFPsi::AliAnalysisTaskBFPsi(const char *name)
   fHistProbTPCTOFvsPtafterPID(NULL),\r
   fHistNSigmaTPCvsPtafterPID(NULL), \r
   fHistNSigmaTOFvsPtafterPID(NULL),  \r
+  fHistBetaVsdEdXafterPID(NULL), //+++++++ \r
+  fHistNSigmaTPCTOFvsPtafterPID(NULL), //+++++++\r
   fCentralityArrayBinsForCorrections(kCENTRALITY),\r
   fPIDResponse(0x0),\r
   fPIDCombined(0x0),\r
@@ -303,13 +307,13 @@ void AliAnalysisTaskBFPsi::UserCreateOutputObjects() {
                            13,-0.5,12.5,220,-5,105);\r
   for(Int_t i = 1; i <= 13; i++){\r
     fHistCentStats->GetXaxis()->SetBinLabel(i,gCentName[i-1].Data());\r
-    //fHistCentStatsUsed->GetXaxis()->SetBinLabel(i,gCentName[i-1].Data());  //++++++++++++++++++++++\r
+    //fHistCentStatsUsed->GetXaxis()->SetBinLabel(i,gCentName[i-1].Data());\r
   }\r
   fList->Add(fHistCentStats);\r
 \r
-  fHistCentStatsUsed = new TH2F("fHistCentStatsUsed","Centrality statistics;;Cent percentile", 1,-0.5,0.5,220,-5,105); //++++++++++++++++++++++\r
-  fHistCentStatsUsed->GetXaxis()->SetBinLabel(1,fCentralityEstimator.Data());  //++++++++++++++++++++++\r
-  fList->Add(fHistCentStatsUsed); //++++++++++++++++++++++\r
+  fHistCentStatsUsed = new TH2F("fHistCentStatsUsed","Centrality statistics;;Cent percentile", 1,-0.5,0.5,220,-5,105);\r
+  fHistCentStatsUsed->GetXaxis()->SetBinLabel(1,fCentralityEstimator.Data());\r
+  fList->Add(fHistCentStatsUsed);\r
 \r
   fHistTriggerStats = new TH1F("fHistTriggerStats","Trigger statistics;TriggerBit;N_{events}",1025,0,1025);\r
   fList->Add(fHistTriggerStats);\r
@@ -511,62 +515,74 @@ void AliAnalysisTaskBFPsi::UserCreateOutputObjects() {
     fPIDCombined->SetDefaultTPCPriors();\r
 \r
     fHistdEdxVsPTPCbeforePID = new TH2D ("dEdxVsPTPCbefore","dEdxVsPTPCbefore", 1000, -10.0, 10.0, 1000, 0, 1000); \r
-    fHistListPIDQA->Add(fHistdEdxVsPTPCbeforePID); //addition \r
+    fHistListPIDQA->Add(fHistdEdxVsPTPCbeforePID);\r
     \r
     fHistBetavsPTOFbeforePID = new TH2D ("BetavsPTOFbefore","BetavsPTOFbefore", 1000, -10.0, 10., 1000, 0, 1.2); \r
-    fHistListPIDQA->Add(fHistBetavsPTOFbeforePID); //addition\r
+    fHistListPIDQA->Add(fHistBetavsPTOFbeforePID); \r
     \r
     fHistProbTPCvsPtbeforePID = new TH2D ("ProbTPCvsPtbefore","ProbTPCvsPtbefore", 1000, -10.0,10.0, 1000, 0, 2.0); \r
-    fHistListPIDQA->Add(fHistProbTPCvsPtbeforePID); //addition \r
+    fHistListPIDQA->Add(fHistProbTPCvsPtbeforePID); \r
     \r
     fHistProbTOFvsPtbeforePID = new TH2D ("ProbTOFvsPtbefore","ProbTOFvsPtbefore", 1000, -50, 50, 1000, 0, 2.0); \r
-    fHistListPIDQA->Add(fHistProbTOFvsPtbeforePID); //addition \r
+    fHistListPIDQA->Add(fHistProbTOFvsPtbeforePID);\r
 \r
     fHistProbTPCTOFvsPtbeforePID =new TH2D ("ProbTPCTOFvsPtbefore","ProbTPCTOFvsPtbefore", 1000, -50, 50, 1000, 0, 2.0); \r
-    fHistListPIDQA->Add(fHistProbTPCTOFvsPtbeforePID); //addition \r
+    fHistListPIDQA->Add(fHistProbTPCTOFvsPtbeforePID);\r
     \r
     fHistNSigmaTPCvsPtbeforePID = new TH2D ("NSigmaTPCvsPtbefore","NSigmaTPCvsPtbefore", 1000, -10, 10, 1000, 0, 500); \r
-    fHistListPIDQA->Add(fHistNSigmaTPCvsPtbeforePID); //addition \r
+    fHistListPIDQA->Add(fHistNSigmaTPCvsPtbeforePID);\r
     \r
     fHistNSigmaTOFvsPtbeforePID = new TH2D ("NSigmaTOFvsPtbefore","NSigmaTOFvsPtbefore", 1000, -10, 10, 1000, 0, 500); \r
-    fHistListPIDQA->Add(fHistNSigmaTOFvsPtbeforePID); //addition \r
+    fHistListPIDQA->Add(fHistNSigmaTOFvsPtbeforePID); \r
+\r
+    fHistBetaVsdEdXbeforePID = new TH2D ("BetaVsdEdXbefore","BetaVsdEdXbefore", 1000, 0., 1000, 1000, 0, 1.2); \r
+    fHistListPIDQA->Add(fHistBetaVsdEdXbeforePID); //++++++++\r
+    \r
+    fHistNSigmaTPCTOFvsPtbeforePID = new TH2D ("NSigmaTPCTOFvsPtbefore","NSigmaTPCTOFvsPtbefore", 1000, -10., 10., 1000, 0, 500); \r
+    fHistListPIDQA->Add(fHistNSigmaTPCTOFvsPtbeforePID); //++++++++\r
     \r
     fHistdEdxVsPTPCafterPID = new TH2D ("dEdxVsPTPCafter","dEdxVsPTPCafter", 1000, -10, 10, 1000, 0, 1000); \r
-    fHistListPIDQA->Add(fHistdEdxVsPTPCafterPID); //addition \r
+    fHistListPIDQA->Add(fHistdEdxVsPTPCafterPID);\r
     \r
     fHistBetavsPTOFafterPID = new TH2D ("BetavsPTOFafter","BetavsPTOFafter", 1000, -10, 10, 1000, 0, 1.2); \r
-    fHistListPIDQA->Add(fHistBetavsPTOFafterPID); //addition \r
+    fHistListPIDQA->Add(fHistBetavsPTOFafterPID); \r
     \r
     fHistProbTPCvsPtafterPID = new TH2D ("ProbTPCvsPtafter","ProbTPCvsPtafter", 1000, -10, 10, 1000, 0, 2); \r
-    fHistListPIDQA->Add(fHistProbTPCvsPtafterPID); //addition \r
+    fHistListPIDQA->Add(fHistProbTPCvsPtafterPID);\r
   \r
     fHistProbTOFvsPtafterPID = new TH2D ("ProbTOFvsPtafter","ProbTOFvsPtafter", 1000,  -10, 10, 1000, 0, 2); \r
-    fHistListPIDQA->Add(fHistProbTOFvsPtafterPID); //addition  \r
+    fHistListPIDQA->Add(fHistProbTOFvsPtafterPID); \r
     \r
     fHistProbTPCTOFvsPtafterPID =new TH2D ("ProbTPCTOFvsPtafter","ProbTPCTOFvsPtafter", 1000, -50, 50, 1000, 0, 2.0); \r
-    fHistListPIDQA->Add(fHistProbTPCTOFvsPtafterPID); //addition \r
+    fHistListPIDQA->Add(fHistProbTPCTOFvsPtafterPID);\r
 \r
     fHistNSigmaTPCvsPtafterPID = new TH2D ("NSigmaTPCvsPtafter","NSigmaTPCvsPtafter", 1000, -10, 10, 1000, 0, 500); \r
-    fHistListPIDQA->Add(fHistNSigmaTPCvsPtafterPID); //addition  \r
+    fHistListPIDQA->Add(fHistNSigmaTPCvsPtafterPID);\r
     \r
     fHistNSigmaTOFvsPtafterPID = new TH2D ("NSigmaTOFvsPtafter","NSigmaTOFvsPtafter", 1000, -10, 10, 1000, 0, 500); \r
-    fHistListPIDQA->Add(fHistNSigmaTOFvsPtafterPID); //addition \r
+    fHistListPIDQA->Add(fHistNSigmaTOFvsPtafterPID);\r
+\r
+    fHistBetaVsdEdXafterPID = new TH2D ("BetaVsdEdXafter","BetaVsdEdXafter", 1000, 0., 1000, 1000, 0, 1.2); \r
+    fHistListPIDQA->Add(fHistBetaVsdEdXafterPID); //++++++++\r
+\r
+    fHistNSigmaTPCTOFvsPtafterPID = new TH2D ("NSigmaTPCTOFvsPtafter","NSigmaTPCTOFvsPtafter", 1000, -10., 10., 1000, 0, 500); \r
+    fHistListPIDQA->Add(fHistNSigmaTPCTOFvsPtafterPID); //++++++++\r
   }\r
 \r
   // for electron rejection only TPC nsigma histograms\r
   if(!fUsePID && fElectronRejection) {\r
  \r
     fHistdEdxVsPTPCbeforePID = new TH2D ("dEdxVsPTPCbefore","dEdxVsPTPCbefore", 1000, -10.0, 10.0, 1000, 0, 1000); \r
-    fHistListPIDQA->Add(fHistdEdxVsPTPCbeforePID); //addition \r
+    fHistListPIDQA->Add(fHistdEdxVsPTPCbeforePID);\r
     \r
     fHistNSigmaTPCvsPtbeforePID = new TH2D ("NSigmaTPCvsPtbefore","NSigmaTPCvsPtbefore", 1000, -10, 10, 1000, 0, 500); \r
     fHistListPIDQA->Add(fHistNSigmaTPCvsPtbeforePID); //addition \r
     \r
     fHistdEdxVsPTPCafterPID = new TH2D ("dEdxVsPTPCafter","dEdxVsPTPCafter", 1000, -10, 10, 1000, 0, 1000); \r
-    fHistListPIDQA->Add(fHistdEdxVsPTPCafterPID); //addition \r
+    fHistListPIDQA->Add(fHistdEdxVsPTPCafterPID);\r
 \r
     fHistNSigmaTPCvsPtafterPID = new TH2D ("NSigmaTPCvsPtafter","NSigmaTPCvsPtafter", 1000, -10, 10, 1000, 0, 500); \r
-    fHistListPIDQA->Add(fHistNSigmaTPCvsPtafterPID); //addition  \r
+    fHistListPIDQA->Add(fHistNSigmaTPCvsPtafterPID); \r
   }\r
   //====================PID========================//\r
 \r
@@ -647,7 +663,7 @@ void AliAnalysisTaskBFPsi::UserExec(Option_t *) {
 \r
   TString gAnalysisLevel = fBalance->GetAnalysisLevel();\r
   Int_t gNumberOfAcceptedTracks = 0;\r
-  Double_t lMultiplicityVar     = -1.;\r
+  Double_t lMultiplicityVar     = -999.; //-1\r
   Double_t gReactionPlane       = -1.; \r
   Float_t bSign = 0.;\r
   \r
@@ -657,8 +673,7 @@ void AliAnalysisTaskBFPsi::UserExec(Option_t *) {
     eventMain = dynamic_cast<AliVEvent*>(MCEvent()); \r
   }\r
   else{\r
-    eventMain = dynamic_cast<AliVEvent*>(InputEvent()); \r
-    \r
+    eventMain = dynamic_cast<AliVEvent*>(InputEvent());     \r
     // for HBT like cuts need magnetic field sign\r
     bSign = (eventMain->GetMagneticField() > 0) ? 1 : -1;\r
   }\r
@@ -672,12 +687,11 @@ void AliAnalysisTaskBFPsi::UserExec(Option_t *) {
     fPIDResponse = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->GetPIDResponse();\r
     if (!fPIDResponse) AliFatal("This Task needs the PID response attached to the inputHandler");\r
   }\r
-  \r
\r
   // check event cuts and fill event histograms\r
-  if((lMultiplicityVar = IsEventAccepted(eventMain)) < 0){\r
+  if((lMultiplicityVar = IsEventAccepted(eventMain)) < 0){ \r
     return;\r
   }\r
-  \r
   // get the reaction plane\r
   if(fEventClass != "Multiplicity") {\r
     gReactionPlane = GetEventPlane(eventMain);\r
@@ -783,7 +797,6 @@ Double_t AliAnalysisTaskBFPsi::IsEventAccepted(AliVEvent *event){
       return -1.;\r
     fHistEventStats->Fill(6,gRefMultiplicity); \r
   }\r
-\r
   // check for pile-up event\r
   if(fCheckPileUp){\r
     AliAnalysisUtils ut;\r
@@ -1304,6 +1317,7 @@ TObjArray* AliAnalysisTaskBFPsi::GetAcceptedTracks(AliVEvent *event, Double_t gC
 \r
   if(gAnalysisLevel == "AOD") { // handling of TPC only tracks different in AOD and ESD\r
     // Loop over tracks in event\r
+    \r
     for (Int_t iTracks = 0; iTracks < event->GetNumberOfTracks(); iTracks++) {\r
       AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(event->GetTrack(iTracks));\r
       if (!aodTrack) {\r
@@ -1319,6 +1333,7 @@ TObjArray* AliAnalysisTaskBFPsi::GetAcceptedTracks(AliVEvent *event, Double_t gC
       for(Int_t iTrackBit = 0; iTrackBit < 16; iTrackBit++){\r
        fHistTrackStats->Fill(iTrackBit,aodTrack->TestFilterBit(1<<iTrackBit));\r
       }\r
+\r
       if(!aodTrack->TestFilterBit(fnAODtrackCutBit)) continue;\r
       \r
       vCharge = aodTrack->Charge();\r
@@ -1368,6 +1383,128 @@ TObjArray* AliAnalysisTaskBFPsi::GetAcceptedTracks(AliVEvent *event, Double_t gC
       }\r
       //===========================end of PID (so far only for electron rejection)===============================//\r
 \r
+      //+++++++++++++++++++++++++++++//\r
+      //===========================PID===============================//                    \r
+      if(fUsePID) {\r
+       Double_t prob[AliPID::kSPECIES]={0.};\r
+       Double_t probTPC[AliPID::kSPECIES]={0.};\r
+       Double_t probTOF[AliPID::kSPECIES]={0.};\r
+       Double_t probTPCTOF[AliPID::kSPECIES]={0.};\r
+       \r
+       Double_t nSigma = 0.;\r
+       Double_t nSigmaTPC = 0.; //++++\r
+       Double_t nSigmaTOF = 0.; //++++\r
+       UInt_t detUsedTPC = 0;\r
+       UInt_t detUsedTOF = 0;\r
+       UInt_t detUsedTPCTOF = 0;\r
+       \r
+       //Decide what detector configuration we want to use\r
+       switch(fPidDetectorConfig) {\r
+       case kTPCpid:\r
+         fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC);\r
+         nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(aodTrack,(AliPID::EParticleType)fParticleOfInterest));\r
+         detUsedTPC = fPIDCombined->ComputeProbabilities(aodTrack, fPIDResponse, probTPC);\r
+         for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)\r
+           prob[iSpecies] = probTPC[iSpecies];\r
+         break;\r
+       case kTOFpid:\r
+         fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF);\r
+         nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(aodTrack,(AliPID::EParticleType)fParticleOfInterest));\r
+         detUsedTOF = fPIDCombined->ComputeProbabilities(aodTrack, fPIDResponse, probTOF);\r
+         for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)\r
+           prob[iSpecies] = probTOF[iSpecies];\r
+         break;\r
+       case kTPCTOF:\r
+         fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC);\r
+         nSigmaTPC = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(aodTrack,(AliPID::EParticleType)fParticleOfInterest)); //++++++\r
+         nSigmaTOF = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(aodTrack,(AliPID::EParticleType)fParticleOfInterest)); //++++++\r
+         nSigma = TMath::Sqrt(nSigmaTPC*nSigmaTPC + nSigmaTOF*nSigmaTOF);//++++++\r
+         detUsedTPCTOF = fPIDCombined->ComputeProbabilities(aodTrack, fPIDResponse, probTPCTOF);\r
+         for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)\r
+           prob[iSpecies] = probTPCTOF[iSpecies];\r
+         break;\r
+       default:\r
+         break;\r
+       }//end switch: define detector mask\r
+       \r
+       //Filling the PID QA\r
+       Double_t tofTime = -999., length = 999., tof = -999.;\r
+       Double_t c = TMath::C()*1.E-9;// m/ns\r
+       Double_t beta = -999.;\r
+       Double_t  nSigmaTOFForParticleOfInterest = -999.;\r
+       if ( (aodTrack->IsOn(AliAODTrack::kTOFin)) &&\r
+            (aodTrack->IsOn(AliAODTrack::kTIME))  ) { \r
+         tofTime = aodTrack->GetTOFsignal();//in ps\r
+         length = aodTrack->GetIntegratedLength();\r
+         tof = tofTime*1E-3; // ns     \r
+         \r
+         if (tof <= 0) {\r
+           //Printf("WARNING: track with negative TOF time found! Skipping this track for PID checks\n");\r
+           continue;\r
+         }\r
+         if (length <= 0){\r
+           //printf("WARNING: track with negative length found!Skipping this track for PID checks\n");\r
+           continue;\r
+         }\r
+         \r
+         length = length*0.01; // in meters\r
+         tof = tof*c;\r
+         beta = length/tof;\r
+         \r
+         nSigmaTOFForParticleOfInterest = fPIDResponse->NumberOfSigmasTOF(aodTrack,(AliPID::EParticleType)fParticleOfInterest);\r
+         fHistBetavsPTOFbeforePID ->Fill(aodTrack->P()*aodTrack->Charge(),beta);\r
+         fHistProbTOFvsPtbeforePID ->Fill(aodTrack->Pt(),probTOF[fParticleOfInterest]);\r
+         fHistNSigmaTOFvsPtbeforePID ->Fill(aodTrack->Pt(),nSigmaTOFForParticleOfInterest);\r
+       }//TOF signal \r
+       \r
+       Double_t  nSigmaTPCForParticleOfInterest = fPIDResponse->NumberOfSigmasTPC(aodTrack,(AliPID::EParticleType)fParticleOfInterest);\r
+       fHistdEdxVsPTPCbeforePID -> Fill(aodTrack->P()*aodTrack->Charge(),aodTrack->GetTPCsignal());\r
+       fHistProbTPCvsPtbeforePID -> Fill(aodTrack->Pt(),probTPC[fParticleOfInterest]); \r
+       fHistNSigmaTPCvsPtbeforePID -> Fill(aodTrack->Pt(),nSigmaTPCForParticleOfInterest); \r
+       fHistProbTPCTOFvsPtbeforePID -> Fill(aodTrack->Pt(),probTPCTOF[fParticleOfInterest]);\r
+       \r
+       //combined TPC&TOF\r
+       fHistBetaVsdEdXbeforePID->Fill(aodTrack->GetTPCsignal(),beta); //+++++++++      \r
+       Double_t nSigmaTPCTOFForParticleOfInterest = -999.;//++++++++\r
+       nSigmaTPCTOFForParticleOfInterest = TMath::Sqrt(nSigmaTPCForParticleOfInterest*nSigmaTPCForParticleOfInterest + nSigmaTOFForParticleOfInterest*nSigmaTOFForParticleOfInterest);//++++++++\r
+       fHistNSigmaTPCTOFvsPtbeforePID -> Fill(aodTrack->Pt(),nSigmaTPCTOFForParticleOfInterest); //++++++++\r
+\r
+       //Printf("nSigma %lf",nSigma); //++++++++++++\r
+       //Printf("nSigmaTPCTOF %lf",nSigmaTPCTOFForParticleOfInterest); //++++++++++++\r
+       //end of QA-before pid\r
+       \r
+       if ((detUsedTPC != 0)||(detUsedTOF != 0)||(detUsedTPCTOF != 0)) {\r
+         //Make the decision based on the n-sigma\r
+         if(fUsePIDnSigma) {\r
+           if(nSigma > fPIDNSigma) continue;  \r
+           \r
+           fHistNSigmaTOFvsPtafterPID ->Fill(aodTrack->Pt(),nSigma);\r
+           fHistNSigmaTPCvsPtafterPID ->Fill(aodTrack->Pt(),nSigma); \r
+           fHistNSigmaTPCTOFvsPtafterPID ->Fill(aodTrack->Pt(),nSigma); //++++++++\r
+         }\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
+         \r
+           fHistProbTOFvsPtafterPID ->Fill(aodTrack->Pt(),probTOF[fParticleOfInterest]);\r
+           fHistProbTPCvsPtafterPID ->Fill(aodTrack->Pt(),probTPC[fParticleOfInterest]); \r
+           fHistProbTPCTOFvsPtafterPID ->Fill(aodTrack->Pt(),probTPCTOF[fParticleOfInterest]);\r
+         \r
+         }\r
+         \r
+         //Printf("nSigmaAFTER %lf", nSigma); //++++++++++++\r
+         //Printf("nSigmaTPCTOFAFTER %lf", nSigmaTPCTOFForParticleOfInterest); //++++++++++++    \r
+         //Fill QA after the PID\r
+         fHistBetavsPTOFafterPID ->Fill(aodTrack->P()*aodTrack->Charge(),beta);\r
+         fHistdEdxVsPTPCafterPID ->Fill(aodTrack->P()*aodTrack->Charge(),aodTrack->GetTPCsignal());\r
+         fHistBetaVsdEdXafterPID->Fill(aodTrack->GetTPCsignal(),beta); //+++++++++      \r
+       }\r
+      }\r
+      //===========================PID===============================//\r
+      //+++++++++++++++++++++++++++++//\r
+\r
+\r
       Float_t dcaXY = aodTrack->DCA();      // this is the DCA from global track (not exactly what is cut on)\r
       Float_t dcaZ  = aodTrack->ZAtDCA();   // this is the DCA from global track (not exactly what is cut on)\r
       \r
@@ -2127,7 +2264,7 @@ Double_t AliAnalysisTaskBFPsi::GetEqualizationFactor(Int_t run,
   if(!fHistVZEROAGainEqualizationMap) return 1.0;\r
 \r
   TString gVZEROSide = side;\r
-  for(Int_t iBinX = 1; iBinX <= fHistVZEROAGainEqualizationMap->GetNbinsX(); iBinX++) {\r
+  for(Int_t iBinX = 1; iBinX < fHistVZEROAGainEqualizationMap->GetNbinsX(); iBinX++) {\r
     Int_t gRunNumber = atoi(fHistVZEROAGainEqualizationMap->GetXaxis()->GetBinLabel(iBinX));\r
     //cout<<"Looking for run "<<run<<" - current run: "<<gRunNumber<<endl;\r
     if(gRunNumber == run) {\r
index 560d435994eb01b8ff6e00e79da4003c41372a85..0baec88321279050f4ab3b937d72799399621eb5 100755 (executable)
@@ -253,6 +253,8 @@ class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
   TH2D *fHistProbTPCTOFvsPtbeforePID;//TOF/TPC probability vs pT before PID cuts (QA histogram)\r
   TH2D *fHistNSigmaTPCvsPtbeforePID;//TPC nsigma vs pT before PID cuts (QA histogram)\r
   TH2D *fHistNSigmaTOFvsPtbeforePID;//TOF nsigma vs pT before PID cuts (QA histogram)\r
+  TH2D *fHistBetaVsdEdXbeforePID;//TPCTOF  before PID cuts (QA histogram)//+++++++++++++++++++++\r
+  TH2D *fHistNSigmaTPCTOFvsPtbeforePID;//TPCTOF  before PID cuts (QA histogram)//+++++++++++++++++++++\r
   TH2D *fHistdEdxVsPTPCafterPID;//TPC dEdx vs momentum after PID cuts (QA histogram)\r
   TH2D *fHistBetavsPTOFafterPID;//beta vs momentum after PID cuts (QA histogram)\r
   TH2D *fHistProbTPCvsPtafterPID; //TPC probability vs pT after PID cuts (QA histogram)\r
@@ -260,6 +262,8 @@ class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
   TH2D *fHistProbTPCTOFvsPtafterPID;//TOF/TPC probability vs pT after PID cuts (QA histogram)\r
   TH2D *fHistNSigmaTPCvsPtafterPID;//TPC nsigma vs pT after PID cuts (QA histogram)\r
   TH2D *fHistNSigmaTOFvsPtafterPID;//TOF nsigma vs pT after PID cuts (QA histogram)\r
+  TH2D *fHistBetaVsdEdXafterPID;//TPCTOF  before PID cuts (QA histogram)//+++++++++++++++++++++\r
+  TH2D *fHistNSigmaTPCTOFvsPtafterPID;//TPCTOF  before PID cuts (QA histogram)//+++++++++++++++++++++\r
   \r
   TH3F *fHistCorrectionPlus[kCENTRALITY]; //====correction\r
   TH3F *fHistCorrectionMinus[kCENTRALITY]; //===correction\r
@@ -283,7 +287,6 @@ class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
   Double_t fElectronRejectionNSigma;//nsigma cut for electron rejection\r
   Double_t fElectronRejectionMinPt;//minimum pt for electron rejection (default = 0.)\r
   Double_t fElectronRejectionMaxPt;//maximum pt for electron rejection (default = 1000.)\r
-\r
   //============PID============//\r
 \r
   AliESDtrackCuts *fESDtrackCuts; //ESD track cuts\r
index 605474da29c1a1dcb100d53b15a4e63b4d16b701..0ec87d4312c1136e7f741104024257956b361c02 100644 (file)
@@ -1,6 +1,6 @@
 AliAnalysisTaskEffContBF *AddTaskBalanceEffCont( TString  centralityEstimator="V0M",
                                                 Double_t centrMin=0.,
-                                                Double_t centrMax=90.,
+                                                Double_t centrMax=80.,
                                                 Double_t vertexZ=10.,
                                                 Int_t AODfilterBit = 128,
                                                 TString fileNameBase="AnalysisResults"
index 0562c2c356c6b8b55b55ab13f1159a5f151d76a7..ef1364ed056a03e9f3746894add184c871468a94 100644 (file)
@@ -9,9 +9,9 @@
 //=============================================//\r
 \r
 //PID config\r
-Bool_t kUseNSigmaPID = kFALSE;\r
+Bool_t kUseNSigmaPID = kTRUE;\r
 Double_t nSigmaMax = 3.0;\r
-Bool_t kUseBayesianPID = kTRUE;\r
+Bool_t kUseBayesianPID = kFALSE;\r
 Double_t gMinAcceptedProbability = 0.7;\r
 \r
 //_________________________________________________________//\r
@@ -30,7 +30,7 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
                                                       Double_t etaMax=0.8,\r
                                                       Double_t maxTPCchi2 = -1, \r
                                                       Int_t minNClustersTPC = -1,\r
-                                                      Bool_t kUsePID = kFALSE,\r
+                                                      Bool_t kUsePID = kTRUE,\r
                                                       Bool_t bResonancesCut = kTRUE,\r
                                                       Bool_t bHBTcut = kTRUE,\r
                                                       Double_t HBTCutValue = 0.02,\r
@@ -123,6 +123,9 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
   \r
   //Event characteristics scheme\r
   taskBF->SetEventClass(fArgEventClass);\r
+  //taskBF->SetCustomBinning("centralityVertex:0,80");\r
+  //taskBF->SetCustomBinning("multiplicity:0,260");\r
+  \r
   if(fArgEventClass == "Multiplicity") {\r
     taskBF->SetMultiplicityRange(centrMin,centrMax);\r
     taskBF->SetMultiplicityEstimator(centralityEstimator);\r
@@ -165,7 +168,7 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
        taskBF->SetUseBayesianPID(gMinAcceptedProbability);\r
       else if(kUseNSigmaPID)\r
        taskBF->SetUseNSigmaPID(nSigmaMax);\r
-      taskBF->SetParticleOfInterest(AliAnalysistaskBFPsi::kProton);\r
+      taskBF->SetParticleOfInterest(AliAnalysisTaskBFPsi::kPion);\r
       taskBF->SetDetectorUsedForPID(AliAnalysisTaskBFPsi::kTOFpid);\r
     }\r
   }\r
@@ -185,6 +188,18 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
       if(electronExclusiveRejection) taskBF->SetElectronOnlyRejection(sigmaElectronRejection); // no other particle in nsigma \r
       else                           taskBF->SetElectronRejection(sigmaElectronRejection); // check only if electrons in nsigma\r
     }\r
+\r
+    //++++++++++++++++//\r
+    if(kUsePID) {\r
+      if(kUseBayesianPID)\r
+       taskBF->SetUseBayesianPID(gMinAcceptedProbability);\r
+      else if(kUseNSigmaPID)\r
+       taskBF->SetUseNSigmaPID(nSigmaMax);\r
+      taskBF->SetParticleOfInterest(AliAnalysisTaskBFPsi::kPion);\r
+      taskBF->SetDetectorUsedForPID(AliAnalysisTaskBFPsi::kTPCTOF); //TOFpid,TPCpid\r
+    }\r
+    //++++++++++++++++//\r
+\r
   }\r
   else if(analysisType == "MC") {\r
     taskBF->SetKinematicsCutsAOD(ptMin,ptMax,etaMin,etaMax);\r
@@ -246,7 +261,9 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
   mgr->ConnectOutput(taskBF, 2, coutBF);\r
   if(gRunShuffling) mgr->ConnectOutput(taskBF, 3, coutBFS);\r
   if(gRunMixing) mgr->ConnectOutput(taskBF, 4, coutBFM);\r
-  if((kUsePID && analysisType == "ESD")||sigmaElectronRejection > 0) mgr->ConnectOutput(taskBF, 5, coutQAPID);\r
+  if(kUsePID||sigmaElectronRejection > 0) mgr->ConnectOutput(taskBF, 5, coutQAPID);\r
+  //if((kUsePID && analysisType == "AOD")||sigmaElectronRejection > 0) mgr->ConnectOutput(taskBF, 5, coutQAPID);\r
+  //if((kUsePID && analysisType == "ESD")||sigmaElectronRejection > 0) mgr->ConnectOutput(taskBF, 5, coutQAPID);\r
 \r
   return taskBF;\r
 }\r