]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding pt spectra of identified particles (K,p,pi) in |y| < 0.5
authormfloris <mfloris@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Apr 2010 10:54:04 +0000 (10:54 +0000)
committermfloris <mfloris@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 23 Apr 2010 10:54:04 +0000 (10:54 +0000)
PWG0/genLevelSimulation/AliAnalysisTaskdNdetaMC.cxx
PWG0/genLevelSimulation/AliAnalysisTaskdNdetaMC.h
PWG0/genLevelSimulation/runTask.C

index 7a597f4c4a902e23b1c776689d761d6dda02780a..64d5f0610424adcb032bcbb4e8875b7ef934a358 100644 (file)
@@ -44,7 +44,10 @@ using namespace std;
 
 ClassImp(AliAnalysisTaskdNdetaMC)
 
-Float_t  AliAnalysisTaskdNdetaMC::fEtaMax = 0.5;
+Float_t      AliAnalysisTaskdNdetaMC::fEtaMax = 0.5;
+Int_t        AliAnalysisTaskdNdetaMC::fPDGCodes[]  = {211,2212,321,-211,-2212,-321} ;
+const char * AliAnalysisTaskdNdetaMC::fPartNames[] = {"PionPos", "ProtonPos", "KaonPos", "PionNeg", "ProtonNeg", "KaonNeg"} ;
+
 
 AliAnalysisTaskdNdetaMC::AliAnalysisTaskdNdetaMC() 
   : AliAnalysisTaskSE(), fNchDens(0), fMyOut(0), 
@@ -55,14 +58,20 @@ AliAnalysisTaskdNdetaMC::AliAnalysisTaskdNdetaMC()
   for(Int_t ihist = 0; ihist < kNHist; ihist++){
     fHistEta[ihist]  = 0;
     fHistPt[ihist]  = 0;
-    for(Int_t ihist2 = 0; ihist2 < kNMultHist; ihist2++){
+    for(Int_t ihist2 = 0; ihist2 < kNEtaHist; ihist2++){
       fHistMult[ihist][ihist2] = 0;    
     }
+    for(Int_t ipart = 0; ipart < kNPart; ipart++){
+      fHistPtID[ihist][ipart] = 0;
+    }
   }  
 
-  fEtaBins[kMult05] = 0.5;
-  fEtaBins[kMult10] = 1.0;
-  fEtaBins[kMult14] = 1.3;
+  
+
+
+  fEtaBins[kEta05] = 0.5;
+  fEtaBins[kEta10] = 1.0;
+  fEtaBins[kEta14] = 1.3;
 
   fEtaMax=0.5;
 
@@ -78,13 +87,16 @@ AliAnalysisTaskdNdetaMC::AliAnalysisTaskdNdetaMC(const char *name)
   for(Int_t ihist = 0; ihist < kNHist; ihist++){
     fHistEta[ihist]  = 0;
     fHistPt[ihist]  = 0;
-    for(Int_t ihist2 = 0; ihist2 < kNMultHist; ihist2++){
+    for(Int_t ihist2 = 0; ihist2 < kNEtaHist; ihist2++){
       fHistMult[ihist][ihist2] = 0;    
     }
+    for(Int_t ipart = 0; ipart < kNPart; ipart++){
+      fHistPtID[ihist][ipart] = 0;
+    }
   }
-  fEtaBins[kMult05] = 0.5;
-  fEtaBins[kMult10] = 1.0;
-  fEtaBins[kMult14] = 1.3;
+  fEtaBins[kEta05] = 0.5;
+  fEtaBins[kEta10] = 1.0;
+  fEtaBins[kEta14] = 1.3;
 
 
   fEtaMax=0.5;
@@ -115,13 +127,16 @@ AliAnalysisTaskdNdetaMC::AliAnalysisTaskdNdetaMC(const char *name, const char *
   for(Int_t ihist = 0; ihist < kNHist; ihist++){
     fHistEta[ihist]  = 0;
     fHistPt[ihist]  = 0;
-    for(Int_t ihist2 = 0; ihist2 < kNMultHist; ihist2++){
+    for(Int_t ihist2 = 0; ihist2 < kNEtaHist; ihist2++){
       fHistMult[ihist][ihist2] = 0;    
     }
+    for(Int_t ipart = 0; ipart < kNPart; ipart++){
+      fHistPtID[ihist][ipart] = 0;
+    }
   }
-  fEtaBins[kMult05] = 0.5;
-  fEtaBins[kMult10] = 1.0;
-  fEtaBins[kMult14] = 1.3;
+  fEtaBins[kEta05] = 0.5;
+  fEtaBins[kEta10] = 1.0;
+  fEtaBins[kEta14] = 1.3;
 
 
   fEtaMax=0.5;
@@ -161,12 +176,17 @@ void AliAnalysisTaskdNdetaMC::UserCreateOutputObjects()
 
   const char * labelType[] = {"INEL", "NSD", "SiD", "ND", "HL"};
   for(Int_t ihist = 0; ihist < kNHist; ihist++){ // type
-    for(Int_t ihist2 = 0; ihist2 < kNMultHist; ihist2++) { // eta range
+    for(Int_t ihist2 = 0; ihist2 < kNEtaHist; ihist2++) { // eta range
       fHistMult[ihist][ihist2] = BookMultHisto(Form("fHistMult_%s_%1.1f",labelType[ihist],fEtaBins[ihist2]),
                                               Form("(dN/dN_{ch})_{|#eta_{max}|<%1.1f} (%s)",fEtaBins[ihist2],labelType[ihist]));    
     }
   }
-
+  for(Int_t ihist = 0; ihist < kNHist; ihist++){ // type
+    for(Int_t ipart = 0; ipart < kNPart; ipart++){ // particle
+      fHistPtID[ihist][ipart] = BookHptHist(Form("fHistPtID_%s_%s",labelType[ihist],fPartNames[ipart]),
+                                           Form("fHistPtID (%s), %s - |y| < 0.5",labelType[ihist],fPartNames[ipart]));
+    }
+  }
   
   
   fNchDens = new TGraphErrors();
@@ -299,6 +319,8 @@ void AliAnalysisTaskdNdetaMC::UserExec(Option_t *)
     }
   }
 
+  
+
   fHistIev->Fill(kHistINEL);
   if (!isSD)                 fHistIev->Fill(kHistNSD);
   if (isSD)                  fHistIev->Fill(kHistSiD);
@@ -308,9 +330,9 @@ void AliAnalysisTaskdNdetaMC::UserExec(Option_t *)
     cout << "Event " << Int_t(fHistIev->GetBinContent(fHistIev->FindBin(kHistINEL))) << endl;
   
 
-
+  static const Float_t ymax =0.5;
   // Track loop
-  Int_t multiplicity[kNHist][kNMultHist] = {{0}};  
+  Int_t multiplicity[kNHist][kNEtaHist] = {{0}};  
   for (Int_t iTrack = 0; iTrack < mcEvent->GetNumberOfTracks(); iTrack++) {
     AliMCParticle *track = (AliMCParticle*)mcEvent->GetTrack(iTrack);
     if (!track) {
@@ -324,31 +346,51 @@ void AliAnalysisTaskdNdetaMC::UserExec(Option_t *)
       fHistEta[kHistINEL]->Fill(track->Eta());            
       if (isEtaLess08) fHistPt[kHistINEL] ->Fill(track->Pt());            
       if(track->Eta() > -fEtaMax && track->Eta() < fEtaMax) fHistNParticlesAtMidRapidity->Fill(kHistINEL);
+
+      for(Int_t ipart = 0; ipart < kNPart; ipart++){
+       if(track->Y() > -ymax && track->Y() < ymax && track->PdgCode() == fPDGCodes[ipart])  fHistPtID[kHistINEL][ipart]->Fill(track->Pt());
+      }
       
+
+
       if(!isSD) {
        fHistEta[kHistNSD]->Fill(track->Eta());      
        if (isEtaLess08) fHistPt [kHistNSD]->Fill(track->Pt());      
        if(track->Eta() > -fEtaMax && track->Eta() < fEtaMax) fHistNParticlesAtMidRapidity->Fill(kHistNSD);
+       for(Int_t ipart = 0; ipart < kNPart; ipart++){
+         if(track->Y() > -ymax && track->Y() < ymax && track->PdgCode() == fPDGCodes[ipart])  fHistPtID[kHistNSD][ipart]->Fill(track->Pt());
+       }
       }
       if(isSD) {
        fHistEta[kHistSiD]->Fill(track->Eta());      
        if (isEtaLess08) fHistPt [kHistSiD]->Fill(track->Pt());      
        if(track->Eta() > -fEtaMax && track->Eta() < fEtaMax) fHistNParticlesAtMidRapidity->Fill(kHistSiD);
+       for(Int_t ipart = 0; ipart < kNPart; ipart++){
+         if(track->Y() > -ymax && track->Y() < ymax && track->PdgCode() == fPDGCodes[ipart])  fHistPtID[kHistSiD][ipart]->Fill(track->Pt());
+       }
       }
       if (isND) {
        fHistEta[kHistND]->Fill(track->Eta());      
        if (isEtaLess08) fHistPt [kHistND]->Fill(track->Pt());      
        if(track->Eta() > -fEtaMax && track->Eta() < fEtaMax) fHistNParticlesAtMidRapidity->Fill(kHistND);
+               for(Int_t ipart = 0; ipart < kNPart; ipart++){
+         if(track->Y() > -ymax && track->Y() < ymax && track->PdgCode() == fPDGCodes[ipart])  fHistPtID[kHistND][ipart]->Fill(track->Pt());
+       }
+
       }
       if (isThereOneCentralPart) {
        fHistEta[kHistHL]->Fill(track->Eta());      
        if (isEtaLess08) fHistPt [kHistHL]->Fill(track->Pt());      
        if(track->Eta() > -fEtaMax && track->Eta() < fEtaMax) fHistNParticlesAtMidRapidity->Fill(kHistHL);
+       for(Int_t ipart = 0; ipart < kNPart; ipart++){
+         if(track->Y() > -ymax && track->Y() < ymax && track->PdgCode() == fPDGCodes[ipart])  fHistPtID[kHistHL][ipart]->Fill(track->Pt());
+       }
+
       }
 
       // fill array of multiplicity for different classes of events
       // and in different eta ranges
-      for(Int_t ihist = 0; ihist < kNMultHist; ihist++){
+      for(Int_t ihist = 0; ihist < kNEtaHist; ihist++){
        if(track->Eta() > -fEtaBins[ihist] && track->Eta() < fEtaBins[ihist]) {
          multiplicity[kHistINEL][ihist]++;
          if(!isSD)                  multiplicity[kHistNSD][ihist]++;
@@ -364,7 +406,7 @@ void AliAnalysisTaskdNdetaMC::UserExec(Option_t *)
 
 
   // Fill multiplicity histos
-  for(Int_t ihist = 0; ihist < kNMultHist; ihist++){
+  for(Int_t ihist = 0; ihist < kNEtaHist; ihist++){
     fHistMult[kHistINEL][ihist] ->Fill(multiplicity[kHistINEL][ihist]);
     if(!isSD)                  fHistMult[kHistNSD][ihist]->Fill(multiplicity[kHistNSD][ihist]);
     if(isSD)                   fHistMult[kHistSiD][ihist]->Fill(multiplicity[kHistSiD][ihist]);
@@ -409,10 +451,14 @@ void AliAnalysisTaskdNdetaMC::Finalize() {
 
   const char * labelType[] = {"INEL", "NSD", "SiD", "ND", "HL"};
   for(Int_t ihist = 0; ihist < kNHist; ihist++){
-    for(Int_t ihist2 = 0; ihist2 < kNMultHist; ihist2++){
+    for(Int_t ihist2 = 0; ihist2 < kNEtaHist; ihist2++){
       fHistMult[ihist][ihist2] = (TH1F*) fMyOut->FindObject(Form("fHistMult_%s_%1.1f",labelType[ihist],fEtaBins[ihist2]));      
       if (!fHistMult[ihist][ihist2]) cout << "Cannot get histo " << Form("fHistMult_%s_%1.1f",labelType[ihist],fEtaBins[ihist2]) << endl;
     }
+    for(Int_t ipart = 0; ipart < kNPart; ipart++){
+      fHistPtID[ihist][ipart] = (TH1F*) fMyOut->FindObject(Form("fHistPtID_%s_%s",labelType[ihist],fPartNames[ipart]));      
+      if(!fHistPtID[ihist][ipart]) AliWarning(Form("Cannot get histo fHistPtID_%s_%s",labelType[ihist],fPartNames[ipart]));
+    }
   }
 
   fHistIev  = (TH1I*) fMyOut->FindObject("fHistIev"  );
@@ -439,9 +485,13 @@ void AliAnalysisTaskdNdetaMC::Finalize() {
     if (!fSkipNormalization) {
       fHistEta[ihist]->Scale(1./iev, "width");       
       fHistPt[ihist] ->Scale(1./iev, "width");       
-      for(Int_t ihist2 = 0; ihist2 < kNMultHist; ihist2++){
+      for(Int_t ihist2 = 0; ihist2 < kNEtaHist; ihist2++){
        fHistMult[ihist][ihist2]->Scale(1./iev);
       }
+      for(Int_t ipart = 0; ipart < kNPart; ipart++){
+       fHistPtID[ihist][ipart]->Scale(1./iev, "width");
+      }
+      
     }
 
 
index 43caa80efb627919a6fc62c7699b18ea99131936..e69cbb1655c92e9aaf442ab48e7a1da4426586b9 100644 (file)
@@ -11,7 +11,10 @@ class TH1I;
 class TGraphErrors;
 
 enum {kHistINEL,kHistNSD,kHistND,kHistSiD,kHistHL,kNHist};
-enum {kMult05,kMult10,kMult14,kNMultHist};// 
+enum {kEta05,kEta10,kEta14,kNEtaHist};// 
+enum {kPionPos, kProtonPos, kKaonPos,
+      kPionNeg, kProtonNeg, kKaonNeg,
+      kNPart}; //Particles used for identified particles pt spectra
 #include "AliAnalysisTaskSE.h"
 
 class AliAnalysisTaskdNdetaMC : public AliAnalysisTaskSE {
@@ -34,7 +37,9 @@ class AliAnalysisTaskdNdetaMC : public AliAnalysisTaskSE {
   TList * GetList() const { return fMyOut;} 
  private:
   TH1F         *fHistEta[kNHist]; //Eta spectrum 
-  TH1F         *fHistPt[kNHist]; //Eta spectrum  , |eta| < 0.8
+  TH1F         *fHistPt[kNHist]; // Pt spectrum  , |eta| < 0.8
+  TH1F         *fHistPtID[kNHist][kNPart]; //Pt identified particles, |y| < 0.5 
+  
   TGraphErrors *fNchDens; // <dN/deta>
   TList * fMyOut; // list of output histos
   TH1I * fHistIev; // number of events per class
@@ -42,12 +47,15 @@ class AliAnalysisTaskdNdetaMC : public AliAnalysisTaskSE {
   static Float_t fEtaMax; // max eta
   Bool_t fSkipNormalization; // Use this when you are running the job on the grid, so that you can normalize dNdeta after merging
 
-  Float_t  fEtaBins[kNMultHist];    // array of eta_max values
-  TH1F * fHistMult[kNHist][kNMultHist];   // array of multiplicity histos in the different eta ranges values, for the different event classes
+  Float_t  fEtaBins[kNEtaHist];    // array of eta_max values
+  TH1F * fHistMult[kNHist][kNEtaHist];   // array of multiplicity histos in the different eta ranges values, for the different event classes
 
   AliAnalysisTaskdNdetaMC(const AliAnalysisTaskdNdetaMC&); // not implemented
   AliAnalysisTaskdNdetaMC& operator=(const AliAnalysisTaskdNdetaMC&); // not implemented
   
+  static Int_t fPDGCodes[kNPart]; // array of PDG codes of particles for ID Spectra plots
+  static const char *  fPartNames[kNPart]; // array of particles names for ID Spectra plots
+
   ClassDef(AliAnalysisTaskdNdetaMC, 2); 
 };
 
index 76bedcda0d73b72e8e85fab2911283c8b5ccf99b..6c40791b9d258422832743e37572d06f1303358c 100644 (file)
@@ -41,6 +41,7 @@ void runTask(Float_t etamax=0.5,const char * incollection = 0, const char * outf
   AliAnalysisManager *mgr = new AliAnalysisManager("dNdeta");
 
   AliVEventHandler* esdH = new AliESDInputHandler;
+  ((AliESDInputHandler*)esdH)->SetReadFriends(kFALSE);
   mgr->SetInputEventHandler(esdH);
 
   // Create tasks