]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGPP/pid/AliAnalysisTaskK0sBayes.cxx
Added the possibility to the user to manage own PID
[u/mrichter/AliRoot.git] / PWGPP / pid / AliAnalysisTaskK0sBayes.cxx
index 898b917ade178ef24ac3f36c2d144f87f858d1e9..78262f8300f9620842c3aed99fe6bf3f4fbffef6 100644 (file)
@@ -69,12 +69,15 @@ AliAnalysisTaskK0sBayes::AliAnalysisTaskK0sBayes():
   fPIDCombined(NULL),
   fContPid(NULL),
   fContPid2(NULL),
+  fContUser(NULL),
+  fContUser2(NULL),
   fNK0s(0),
   fNpiPos(0),
   fNpiNeg(0),
   fHmismTOF(0),
   fHchannelTOFdistr(0),
-  fTypeCol(2)
+  fTypeCol(2),
+  fPIDuserCut(NULL)
 {
   // Default constructor (should not be used)
   fList->SetName("contKsBayes1");
@@ -149,12 +152,15 @@ AliAnalysisTaskK0sBayes::AliAnalysisTaskK0sBayes(const char *name):
   fPIDCombined(NULL),
   fContPid(NULL),
   fContPid2(NULL),
+  fContUser(NULL),
+  fContUser2(NULL),
   fNK0s(0),
   fNpiPos(0),
   fNpiNeg(0),
   fHmismTOF(0),
   fHchannelTOFdistr(0),
-  fTypeCol(2)
+  fTypeCol(2),
+  fPIDuserCut(NULL)
 {
 
   DefineOutput(1, TList::Class());
@@ -288,8 +294,6 @@ void AliAnalysisTaskK0sBayes::UserCreateOutputObjects()
   fContPid2->SetVarName(13,"#Psi");
   fContPid2->SetVarRange(13,-TMath::Pi()/2,TMath::Pi()/2);
 
-
-
   const Int_t nDETsignal = 100; // mass
   Double_t binDETsignal[nDETsignal+1];
   for(Int_t i=0;i<nDETsignal+1;i++){
@@ -306,6 +310,46 @@ void AliAnalysisTaskK0sBayes::UserCreateOutputObjects()
   fList->Add(fContPid);
   fList->Add(fContPid2);
 
+  const Int_t nBinUser = 6;
+  Int_t binUser[nBinUser] = {8/*Eta*/,20/*pt*/,2/*istrue*/,4/*whatSelection*/,1/*DeltaPhi*/,1/*Psi*/};
+  fContUser = new AliPIDperfContainer("contUserPID",nBinUser,binUser);
+  fContUser->SetTitleX("M_{K^{0}_{s}}");
+  fContUser->SetTitleY("centrality (%)");
+  fContUser->SetVarName(0,"#eta^{K^{0}_{s}}");
+  fContUser->SetVarRange(0,-0.8,0.8);
+  fContUser->SetVarName(1,"p_{T}");
+  fContUser->SetVarRange(1,0.3,4.3);
+  fContUser->SetVarName(2,"isKsTrue^{Kn}");
+  fContUser->SetVarRange(2,-0.5,1.5);
+  fContUser->SetVarName(3,"whatSelected"); // 0=no, 1=pi, 2=K, 3=p
+  fContUser->SetVarRange(3,-0.5,3.5);
+  fContUser->SetVarName(4,"#Delta#phi");
+  fContUser->SetVarRange(4,-TMath::Pi(),TMath::Pi());
+  fContUser->SetVarName(5,"#Psi");
+  fContUser->SetVarRange(5,-TMath::Pi()/2,TMath::Pi()/2);
+
+  fContUser2 = new AliPIDperfContainer("contUserPID2",nBinUser,binUser);
+  fContUser2->SetTitleX("M_{K^{0}_{s}}");
+  fContUser2->SetTitleY("centrality (%)");
+  fContUser2->SetVarName(0,"#eta^{K^{0}_{s}}");
+  fContUser2->SetVarRange(0,-0.8,0.8);
+  fContUser2->SetVarName(1,"p_{T}");
+  fContUser2->SetVarRange(1,0.3,4.3);
+  fContUser2->SetVarName(2,"isKsTrue^{Kn}");
+  fContUser2->SetVarRange(2,-0.5,1.5);
+  fContUser2->SetVarName(3,"whatSelected");
+  fContUser2->SetVarRange(3,-0.5,3.5);
+  fContUser2->SetVarName(4,"#Delta#phi");
+  fContUser2->SetVarRange(4,-TMath::Pi(),TMath::Pi());
+  fContUser2->SetVarName(5,"#Psi");
+  fContUser2->SetVarRange(5,-TMath::Pi()/2,TMath::Pi()/2);
+
+  fContUser->AddSpecies("K0s",nDETsignal,binDETsignal,nDETsignal2,binDETsignal2);
+  fContUser2->AddSpecies("K0s2",nDETsignal,binDETsignal,nDETsignal2,binDETsignal2);
+
+  fList->Add(fContUser);
+  fList->Add(fContUser2);
+
   hMatching[0] = new TH2F("hMatchAll","TOF matched (all);p_{T} (GeV/#it{c});centrality (%)",50,0,10,nDETsignal2,0,100);
   hMatching[1] = new TH2F("hMatchPi","TOF matched (#pi);p_{T} (GeV/#it{c});centrality (%)",50,0,10,nDETsignal2,0,100);
   hMatching[2] = new TH2F("hMatchKa","TOF matched (K);p_{T} (GeV/#it{c});centrality (%)",50,0,10,nDETsignal2,0,100);
@@ -852,6 +896,29 @@ void AliAnalysisTaskK0sBayes::Analyze(AliAODEvent* aodEvent)
        fContPid->Fill(0,fMassV0,fCentrality,xTOfill);
         xTOfill[1] = KnTrack->Eta();
        fContPid2->Fill(0,fMassV0,fCentrality,xTOfill);
+
+       if(fPIDuserCut){
+         Float_t xUser[] = {KpTrack->Eta(),fPtKp,isTrue,0,deltaphi1,fPsi};
+         Float_t xUser2[] = {KnTrack->Eta(),fPtKn,isTrue,0,deltaphi2,fPsi};
+
+         if(fPIDuserCut->IsSelected(KpTrack,AliPID::kPion)){ // to be filled for positive
+           xUser[3] = 1;
+         } else if(fPIDuserCut->IsSelected(KpTrack,AliPID::kKaon)){
+           xUser[3] = 2;
+         } else if(fPIDuserCut->IsSelected(KpTrack,AliPID::kProton)){
+           xUser[3] = 3;
+         }
+         if(fPIDuserCut->IsSelected(KnTrack,AliPID::kPion)){ // to be filled for negative
+           xUser2[3] = 1;
+         } else if(fPIDuserCut->IsSelected(KnTrack,AliPID::kKaon)){
+           xUser2[3] = 2;
+         } else if(fPIDuserCut->IsSelected(KnTrack,AliPID::kProton)){
+           xUser2[3] = 3;
+         }
+         fContUser->Fill(0,fMassV0,fCentrality,xUser);
+         fContUser2->Fill(0,fMassV0,fCentrality,xUser2);
+       }
+
       }