]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraBoth.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AliAnalysisTaskSpectraBoth.cxx
index 78a7879f193cb4724f47546a412eb49ecfc856ee..af9348a0d5cb7ab376fe5d81b5befd337c144302 100644 (file)
@@ -59,8 +59,7 @@ using namespace std;
 ClassImp(AliAnalysisTaskSpectraBoth)
 
 //________________________________________________________________________
-AliAnalysisTaskSpectraBoth::AliAnalysisTaskSpectraBoth(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fHistMan(0), fTrackCuts(0), fEventCuts(0),  fPID(0), fIsMC(0), fNRebin(0),fUseMinSigma(0),fCuts(0),fdotheMCLoopAfterEventCuts(0),
-fmakePIDQAhisto(1),fMotherWDPDGcode(-1)
+AliAnalysisTaskSpectraBoth::AliAnalysisTaskSpectraBoth(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fHistMan(0), fTrackCuts(0), fEventCuts(0),  fPID(0), fIsMC(0), fNRebin(0),fUseMinSigma(0),fCuts(0),fdotheMCLoopAfterEventCuts(0),fmakePIDQAhisto(1),fMotherWDPDGcode(-1)
 
 {
   // Default constructor
@@ -114,8 +113,16 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
        }
        else
                AliFatal("Not processing AODs or ESDS") ;
+       if(fIsMC)
+       {               
+               if(!fEventCuts->CheckMCProcessType(MCEvent()))
+                       return ;                
+       }
+
+
        if(fdotheMCLoopAfterEventCuts)
-               if(!fEventCuts->IsSelected(fAOD,fTrackCuts))return;//event selection
+               if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,-100,fHistMan->GetEventStatHist()))
+                       return;//event selection
        TClonesArray *arrayMC = 0;
        Int_t npar=0;
        AliStack* stack=0x0;
@@ -206,7 +213,8 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
                  }
        }
        if(!fdotheMCLoopAfterEventCuts)
-               if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,mcZ))return;//event selection
+               if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,mcZ,fHistMan->GetEventStatHist()))
+                       return;//event selection
        //main loop on tracks
        Int_t ntracks=0;
        //cout<<fAOD->GetNumberOfTracks()<<endl;
@@ -246,7 +254,8 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
                else
                        continue;
                if (!fTrackCuts->IsSelected(track,kTRUE)) 
-                       continue;
+                       continue;       
+                       
                ntracks++;
                if(fmakePIDQAhisto)
                        fPID->FillQAHistos(fHistMan, track, fTrackCuts);
@@ -267,6 +276,7 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
                fHistMan->GetPtHistogram(kHistPtRec)->Fill(track->Pt(),dca);  // PT histo
                // get identity and charge
                Bool_t rec[3]={false,false,false};
+               Bool_t sel[3]={false,false,false};
                Int_t idRec  = fPID->GetParticleSpecie(fHistMan,track, fTrackCuts,rec);
                for(int irec=kSpPion;irec<kNSpecies;irec++)
                {
@@ -290,9 +300,13 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
                        if(idRec != kSpUndefined && fTrackCuts->CheckYCut ((BothParticleSpecies_t)idRec))
                        {
                                fHistMan->GetHistogram2D(kHistPtRecSigma,idRec,charge)->Fill(track->Pt(),dca);
-                               fTrackCuts->GetHistoDCAzQA()->Fill(idRec,track->Pt(),dcaz);
-                               fTrackCuts->GetHistoNclustersQA()->Fill(idRec,track->Pt(),ncls);
-                               fTrackCuts->GetHistochi2perNDFQA()->Fill(idRec,track->Pt(),chi2perndf);
+                               if(fTrackCuts->GetMakeQAhisto())
+                               { 
+                                       fTrackCuts->GetHistoDCAzQA()->Fill(idRec,track->Pt(),dcaz);
+                                       fTrackCuts->GetHistoNclustersQA()->Fill(idRec,track->Pt(),ncls);
+                                       fTrackCuts->GetHistochi2perNDFQA()->Fill(idRec,track->Pt(),chi2perndf);
+                               }
+                               sel[idRec]=true;
                        }
                        //can't put a continue because we still have to fill allcharged primaries, done later
                
@@ -346,7 +360,7 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
                                                if(indexMoth>=0)
                                                {
                                                        AliAODMCParticle* moth = (AliAODMCParticle*) arrayMC->At(indexMoth);
-                                                       if(!moth)
+                                                       if(moth)
                                                                motherpdg=TMath::Abs(moth->GetPdgCode());
                                                }
                                        }
@@ -397,7 +411,7 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
                                 if(!fTrackCuts->CheckYCut ((BothParticleSpecies_t)idRec)) continue;
                  
                  // Get true ID
-                 
+                                       
                  
                                 if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTrue,  idGen, charge)->Fill(track->Pt(),dca); 
                  
@@ -445,6 +459,15 @@ void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
                  
                        }//end if(arrayMC)
                }
+               if(sel[0]&&sel[1]&&sel[2])//pi+k+p
+                       fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),0);
+               else if(sel[0]&&sel[1]) //pi+k
+                       fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),1);
+               else if(sel[0]&&sel[2]) //pi+k
+                       fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),2);
+               else if(sel[1]&&sel[2]) //p+k
+                       fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),3);
+
        
        
        } // end loop on tracks