]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/SPECTRA/AliProtonAnalysis.cxx
i)Code cleanup ii)Reading MC info from the same class - To be done: CORRFW interface
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliProtonAnalysis.cxx
index a5b138d7bca8119ac7bc178898894a7d8738d16c..5ee8ebda82e0bd6a35395edb5cd43d767a205859 100644 (file)
@@ -24,6 +24,7 @@
 #include <TF1.h>
 #include <TH2F.h>
 #include <TH1D.h>
+#include <TParticle.h>
 
 #include "AliProtonAnalysis.h"
 
@@ -33,6 +34,8 @@
 #include <AliLog.h>
 #include <AliPID.h>
 
+#include <AliStack.h>
+
 ClassImp(AliProtonAnalysis)
 
 //____________________________________________________________________//
@@ -128,7 +131,7 @@ Bool_t AliProtonAnalysis::ReadFromFile(const char* filename) {
     status = kFALSE;
   }
 
-  TList *list = (TList *)file->Get("clist1");
+  TList *list = (TList *)file->Get("outputList1");
   if(list) {
     cout<<"Retrieving objects from the list "<<list->GetName()<<"..."<<endl; 
     fHistYPtProtons = (TH2F *)list->At(0);
@@ -300,7 +303,7 @@ Double_t AliProtonAnalysis::GetParticleFraction(Int_t i, Double_t p) {
 
 //____________________________________________________________________//
 void AliProtonAnalysis::Analyze(AliESDEvent* fESD) {
-  //Main analysis part
+  //Main analysis part - ESD
   Double_t Pt = 0.0, P = 0.0;
   Int_t nGoodTracks = fESD->GetNumberOfTracks();
   for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
@@ -359,7 +362,7 @@ void AliProtonAnalysis::Analyze(AliESDEvent* fESD) {
 
 //____________________________________________________________________//
 void AliProtonAnalysis::Analyze(AliAODEvent* fAOD) {
-  //Main analysis part
+  //Main analysis part - AOD
   Int_t nGoodTracks = fAOD->GetNumberOfTracks();
   for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
     AliAODTrack* track = fAOD->GetTrack(iTracks);
@@ -382,6 +385,25 @@ void AliProtonAnalysis::Analyze(AliAODEvent* fAOD) {
   }//track loop 
 }
 
+//____________________________________________________________________//
+void AliProtonAnalysis::Analyze(AliStack* stack) {
+  //Main analysis part - MC
+  for(Int_t i = 0; i < stack->GetNprimary(); i++) {
+    TParticle *particle = stack->Particle(i);
+    if(particle->Pt() < 0.1) continue;
+    if(TMath::Abs(particle->Eta()) > 1.0) continue;
+    Int_t pdgcode = particle->GetPdgCode();
+    if(pdgcode == 2212) fHistYPtProtons->Fill(Rapidity(particle->Px(),
+                                                      particle->Py(),
+                                                      particle->Pz()),
+                                             particle->Pt());
+    if(pdgcode == -2212) fHistYPtAntiProtons->Fill(Rapidity(particle->Px(),
+                                                           particle->Py(),
+                                                           particle->Pz()),
+                                                  particle->Pt());
+  }//particle loop                                                                  
+}
+
 //____________________________________________________________________//
 Bool_t AliProtonAnalysis::IsAccepted(AliESDtrack* track) {
   // Checks if the track is excluded from the cuts