]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Net Particle updates (Jochen Thaeder <jochen@thaeder.de>)
authormiweber <miweber@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 14 Jan 2013 14:45:12 +0000 (14:45 +0000)
committermiweber <miweber@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 14 Jan 2013 14:45:12 +0000 (14:45 +0000)
PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.cxx
PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.h
PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDistribution.cxx
PWGCF/EBYE/NetParticle/AliAnalysisNetParticleEffCont.cxx
PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.cxx
PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.h
PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.cxx
PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.h
PWGCF/EBYE/NetParticle/eff/effectiveCorrection.root
PWGCF/EBYE/NetParticle/macros/AddTaskNetParticle.C

index e6535fbb5a9a2d91a6d528a56c8b665d85aa89ff..fe3b0a71f0c7de7fa836abd067c5623b569b335e 100644 (file)
@@ -78,11 +78,11 @@ void AliAnalysisNetParticleDCA::Initialize(AliESDtrackCuts *cuts, AliESDtrackCut
   fLabelsRec        = new Int_t*[2];
   for (Int_t ii = 0; ii < 2 ; ++ii)
     fLabelsRec[ii] = NULL;
-
+#endif
   // -- Create THnSparse Histograms
   // --------------------------------
   CreateHistograms();
-#endif  
+
   return;
 }
 
@@ -148,6 +148,10 @@ void AliAnalysisNetParticleDCA::ResetEvent() {
 void AliAnalysisNetParticleDCA::Process() {
   // -- Process event
 
+
+
+
+
   // -- Setup (clean, create and fill) MC labels
   // ---------------------------------------------
   //  FillMCLabels();
@@ -164,7 +168,7 @@ void AliAnalysisNetParticleDCA::Process() {
  *                                 Private Methods
  * ---------------------------------------------------------------------------------
  */
-#if 0
+
 //________________________________________________________________________
 void AliAnalysisNetParticleDCA::CreateHistograms() {
   // -- Create histograms
@@ -190,23 +194,33 @@ void AliAnalysisNetParticleDCA::CreateHistograms() {
   // ------------------------------------------------------------------
   // -- Create THnSparseF - DCA
   // ------------------------------------------------------------------
+  //  DCAr, DCAz, eta phi centrality
+
+  // >  Type : 
+  //     Primary MC p + ContMiss p
+  //     2nd Material
+  //     2nd Weak Decays
+
+  //     IsAcceptedDCA
 
-  //                              cent:   etaMC:     yMC:   phiMC:   ptMC:     sign:contPart:DCArAccepted:DCAr
-  Int_t    binHnDCA[9] = {   iCent,    iEta,    iRap,    iPhi,    iPt,    iSign,       4,           2,  50 };     
-  Double_t minHnDCA[9] = {dCent[0], dEta[0], dRap[0], dPhi[0], dPt[0], dSign[0],     0.5,        -0.5, -10.};
-  Double_t maxHnDCA[9] = {dCent[1], dEta[1], dRap[1], dPhi[1], dPt[1], dSign[1],     4.5,         1.5,  10.};
-  fHnDCA = new THnSparseF("fHnDCA", "cent:etaMC:yMC:phiMC:ptMC:sign:contPart:contSign:DCArAccepted:DCAr", 9, binHnDCA, minHnDCA, maxHnDCA);
+  //                           cent:   etaMC:     yMC:   phiMC:   ptMC:     sign:contPart:DCArAccepted: DCAr: DCAz
+  Int_t    binHnDCA[10] = {   iCent,    iEta,    iRap,    iPhi,    iPt,    iSign,       4,           2,  50 , 50 };     
+  Double_t minHnDCA[10] = {dCent[0], dEta[0], dRap[0], dPhi[0], dPt[0], dSign[0],     0.5,        -0.5, -10.,-10.};
+  Double_t maxHnDCA[19] = {dCent[1], dEta[1], dRap[1], dPhi[1], dPt[1], dSign[1],     4.5,         1.5,  10., 10.};
+  fHnDCA = new THnSparseF("fHnDCA", "cent:etaMC:yMC:phiMC:ptMC:sign:contPart:contSign:DCArAccepted:DCAr:DCAz", 10, binHnDCA, minHnDCA, maxHnDCA);
   
   fHnDCA->Sumw2();
   fHnDCA->GetAxis(0)->SetTitle("centrality");                   //  0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins
-  fHnDCA->GetAxis(1)->SetTitle("#eta_{MC}");                    //  eta  [-0.9,0.9]
-  fHnDCA->GetAxis(2)->SetTitle("#it{y}_{MC}");                  //  rapidity  [-0.5, 0.5]
-  fHnDCA->GetAxis(3)->SetTitle("#varphi_{MC} (rad)");           //  phi  [ 0. ,2Pi]
-  fHnDCA->GetAxis(4)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})");   //  pT   [ 0.1,1.3]
+  fHnDCA->GetAxis(1)->SetTitle("#eta_{Rec}");                    //  eta  [-0.9,0.9]
+  fHnDCA->GetAxis(2)->SetTitle("#it{y}_{Rec}");                  //  rapidity  [-0.5, 0.5]
+  fHnDCA->GetAxis(3)->SetTitle("#varphi_{Rec} (rad)");           //  phi  [ 0. ,2Pi]
+  fHnDCA->GetAxis(4)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})");   //  pT   [ 0.1,1.3]
   fHnDCA->GetAxis(5)->SetTitle("sign");                         //  -1 | 0 | +1 
+
   fHnDCA->GetAxis(6)->SetTitle("contPart");                     //  1  primary | 2 missId | 3 from WeakDecay | 4 p from Material
   fHnDCA->GetAxis(7)->SetTitle("DCArAccepted");                 //  0 not accepted | 1 accepted 
   fHnDCA->GetAxis(8)->SetTitle("DCAr");                         //  DCAr [-10,10]
+  fHnDCA->GetAxis(9)->SetTitle("DCAz");                         //  DCAz [-10,10]
 
   // ------------------------------------------------------------------
   
@@ -214,14 +228,14 @@ void AliAnalysisNetParticleDCA::CreateHistograms() {
 }
 
 //________________________________________________________________________
-void AliAnalysisNetParticleDCA::FillMCDCA() {
+void AliAnalysisNetParticleDCA::FillDCA() {
   // Fill MC labels
   // Loop over ESD tracks and fill arrays with MC lables
   //  fLabelsRec[0] : all Tracks
   //  fLabelsRec[1] : all Tracks accepted by PID of TPC
   // Check every accepted track if correctly identified
   //  otherwise check for contamination
-
+#if 0
   for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
     AliESDtrack *track = fESD->GetTrack(idxTrack); 
     
@@ -230,7 +244,7 @@ void AliAnalysisNetParticleDCA::FillMCDCA() {
       continue;
     
     // -- Check if accepted
-    if (!fESDTrackCuts->AcceptTrack(track)) 
+    if (!fESDTrackCutsBkg->AcceptTrack(track)) 
       continue;
 
     // -- Check if accepted in rapidity window
@@ -238,36 +252,44 @@ void AliAnalysisNetParticleDCA::FillMCDCA() {
     if (!fHelper->IsTrackAcceptedRapidity(track, yP))
       continue;
 
-    // -- Check if accepted with thighter DCA cuts
-    if (!fHelper->IsTrackAcceptedDCA(track))
-      continue;
-
-    Int_t label  = TMath::Abs(track->GetLabel()); 
-    
-    // -- Fill Label of all reconstructed
-    fLabelsRec[0][idxTrack] = label;
-
     // -- Check if accepted by PID from TPC or TPC+TOF
     Double_t pid[2];
     if (!fHelper->IsTrackAcceptedPID(track, pid))
       continue;
 
-    // -- Fill Label of all reconstructed && recPid_TPC+TOF    
-    fLabelsRec[1][idxTrack] = label;    
+  
+    Bool_t isDCArAccepted = kTRUE;
+
+    // -- Check if accepted with thighter DCA cuts
+    if (!fHelper->IsTrackAcceptedDCA(track))
+      isDCArAccepted = kFALSE;
+
+    if (!fESDTrackCuts->AcceptTrack(track)) 
+      isDCArAccepted = kFALSE;
+
+
+    // ?    Int_t label  = ); 
     
+
     // -- Check for contamination and fill contamination THnSparse
-    CheckContTrack(label, track->GetSign(), idxTrack);
+    Int_t contIdx = CheckContTrack(TMath::Abs(track->GetLabel());
+    
+    Double_t hnDCA[10] = {fCentralityBin, track->Eta(), yP, track->Phi(), track->Pt(), sign, contIdx, isDCArAccepted, dcar, dcaz};
+    fHnDCA->Fill(hnContDCA);
 
   } // for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
-
+#endif
   return;
 }
 
 //________________________________________________________________________
-void AliAnalysisNetParticleDCA::CheckDCATrack(Int_t label, Float_t sign, Float_t isDCArAccepted, Float_t dcar) {
+  Int_t AliAnalysisNetParticleDCA::CheckDCATrack(Int_t /*label*/) {
   // Check if DCA of contamination or correctly identified
   // Fill contamination DCA THnSparse
+  // return  1  primary | 2 missId | 3 from WeakDecay | 4 p from Material | -1 unknown
 
+  Int_t contIdx = -1;
+#if 0
   TParticle* particle = fStack->Particle(label);
   if (!particle)
     return;
@@ -275,30 +297,27 @@ void AliAnalysisNetParticleDCA::CheckDCATrack(Int_t label, Float_t sign, Float_t
   Bool_t isSecondaryFromWeakDecay = kFALSE;
   Bool_t isSecondaryFromMaterial  = kFALSE;
   
-  Int_t contPart = 0;
-
-  // -- Check if correctly identified 
-  if (particle->GetPdgCode() == (sign*fPdgCode)) {
-
+  ////  // Check if is physical primary -> all ok 
+  if (fStack->IsPhysicalPrimary(label)) {
+    
+    // -- Check if correctly identified 
     // Check if is physical primary -> all ok 
-    if (fStack->IsPhysicalPrimary(label))
-      contPart = 1;    
-    // -- Check if secondaries from weak decay
-    else if(isSecondaryFromWeakDecay = fStack->IsSecondaryFromWeakDecay(label))
-      contPart = 3;
-    // -- Check if secondaries from material decay
-    else if (isSecondaryFromMaterial  = fStack->IsSecondaryFromMaterial(label))
-      contPart = 4;
+    if (particle->GetPdgCode() == (sign*fPdgCode))
+      contIdx = 1;    
+    // -- MissIdentification
+    else 
+      contIdx = 2;
+  }
+  // -- Check if secondaries from weak decay
+  else if(isSecondaryFromWeakDecay = fStack->IsSecondaryFromWeakDecay(label))
+    contIdx = 3;
+  // -- Check if secondaries from material decay
+  else if (isSecondaryFromMaterial  = fStack->IsSecondaryFromMaterial(label))
+    contIdx = 4;
   } 
-  // -- MissIdentification
-  else
-    contPart = 2;
-  
-  Double_t hnDCA[9] = {fCentralityBin, particle->Eta(), particle->Y(), particle->Phi(), particle->Pt(), sign, contPart, isDCArAccepted, dcar};
-  fHnDCA->Fill(hnContDCA);
-  
-  return;
+#endif
+  return contIdx;
 }
 
 
-#endif
+
index d6d63d67da6933ece7ec7fac2be3877de4f7bcac..310a21667e34d103500d0b3589aa738362adcf4d 100644 (file)
@@ -66,7 +66,7 @@ class AliAnalysisNetParticleDCA : public TNamed {
   AliAnalysisNetParticleDCA& operator=(const AliAnalysisNetParticleDCA&); // not implemented
 
 
-#if 0
+
   /*
    * ---------------------------------------------------------------------------------
    *                                Methods - private
@@ -80,8 +80,9 @@ class AliAnalysisNetParticleDCA : public TNamed {
   void FillDCA(); 
 
   /** Check if particle is contamination */
-  void CheckDCATrack(Int_t label, Float_t sign, Int_t idxTrack);
-      
+  Int_t CheckDCATrack(Int_t label);
+  //  void CheckDCATrack(Int_t label, Float_t sign, Int_t idxTrack);
+#if 0      
   /*
    * ---------------------------------------------------------------------------------
    *                             Members - private
index fe3a9a1f0f1a1f2897d0429af10fee2a5ec7a769..62bcc633086937da2ab2cffa791b81725308f937 100644 (file)
@@ -152,9 +152,9 @@ void AliAnalysisNetParticleDistribution::CreateHistograms(TList* outList) {
 
   if (fIsMC) {
     AddHistSet("fHMCrapidity", "MC primary in |y| < 0.5");
-    AddHistSet("fHMCptMin",    "MC primary in |y| + #it{p}_{T} > 0.1");
-    AddHistSet("fHMCpt",       Form("MC primary in |y| < 0.5 + #it{p}_{T} [%.1f,%.1f]", fPtRange[0], fPtRange[1]));
-    AddHistSet("fHMCeta",      Form("MC primary in |y| < 0.5 + |#eta| < %.1f", fEtaMax));
+    //    AddHistSet("fHMCptMin",    "MC primary in |y| + #it{p}_{T} > 0.1");
+    //    AddHistSet("fHMCpt",       Form("MC primary in |y| < 0.5 + #it{p}_{T} [%.1f,%.1f]", fPtRange[0], fPtRange[1]));
+    //    AddHistSet("fHMCeta",      Form("MC primary in |y| < 0.5 + |#eta| < %.1f", fEtaMax));
     AddHistSet("fHMCetapt",    Form("MC primary in |y| < 0.5 + |#eta| < %.1f + #it{p}_{T} [%.1f,%.1f]", fEtaMax, fPtRange[0], fPtRange[1]));
     
     //    AddHistSet("fHControlMCLambdarapidity", "Control MC Lambda primary in |y| < 0.5");
@@ -472,6 +472,8 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackParticles() {
     
     // -- Check rapidity window
     Double_t yMC;
+    if (!fHelper->GetUsePID()) 
+      yMC = fEtaMax;
     if (!fHelper->IsParticleAcceptedRapidity(particle, yMC))
       continue;
     
@@ -497,9 +499,9 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackParticles() {
   // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
   FillHistSet("fHMCrapidity", fMCNp[0]);
-  FillHistSet("fHMCptMin",    fMCNp[1]);
-  FillHistSet("fHMCpt",       fMCNp[2]);
-  FillHistSet("fHMCeta",      fMCNp[3]);
+  //  FillHistSet("fHMCptMin",    fMCNp[1]);
+  //  FillHistSet("fHMCpt",       fMCNp[2]);
+  //  FillHistSet("fHMCeta",      fMCNp[3]);
   FillHistSet("fHMCetapt",    fMCNp[4]);
 
   return 0;
@@ -511,7 +513,7 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackControlParticles() {
 
   Int_t pdgCode    = fHelper->GetControlParticleCode();
   Bool_t isNeutral  = fHelper->IsControlParticleNeutral();
-  //const Char_t* name = fHelper->GetControlParticleName().Data();
+  //  const Char_t* name = fHelper->GetControlParticleName().Data();
 
   for (Int_t idxMC = 0; idxMC < fStack->GetNprimary(); ++idxMC) {
     TParticle* particle = fStack->Particle(idxMC);
@@ -540,6 +542,8 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackControlParticles() {
     
     // -- Check rapidity window
     Double_t yMC;
+    if (!fHelper->GetUsePID()) 
+      yMC = fEtaMax;
     if (!fHelper->IsParticleAcceptedRapidity(particle, yMC))
       continue;
 
@@ -597,12 +601,12 @@ void  AliAnalysisNetParticleDistribution::AddHistSet(const Char_t *name, const C
     list->Add(new TH2F(Form("%s%s", name, fHelper->GetParticleName(idxPart).Data()), 
                       Form("%s %s Dist %s;Centrality;N_{%s}", title, fHelper->GetParticleTitle(idxPart).Data(), sPtTitle.Data(), 
                            fHelper->GetParticleTitleLatex(idxPart).Data()), 
-                      24, -0.5, 11.5, 501, -0.5, 500.49));
+                      24, -0.5, 11.5, 2601, -0.5, 2600.49));
   } // for (Int_t idxPart = 0; idxPart < 2; ++idxPart) {
    
   list->Add(new TH2F(Form("%sNet%s", name, fHelper->GetParticleName(1).Data()), 
                     Form("%s Net %s Dist %s;Centrality;N_{%s} - N_{%s}", title, fHelper->GetParticleTitle(1).Data(), sPtTitle.Data(),
-                         fHelper->GetParticleTitleLatex(1).Data(),fHelper->GetParticleTitleLatex(0).Data()), 24, -0.5, 11.5, 201, -100.5, 100.49));
+                         fHelper->GetParticleTitleLatex(1).Data(),fHelper->GetParticleTitleLatex(0).Data()), 24, -0.5, 11.5, 601, -300.5, 300.49));
 
   list->Add(new TProfile(Form("%sNet%sM", name, fHelper->GetParticleName(1).Data()), 
                         Form("%s Net %s Dist %s;Centrality;N_{%s} - N_{%s}", title, fHelper->GetParticleTitle(1).Data(), sPtTitle.Data(),
@@ -627,7 +631,7 @@ void  AliAnalysisNetParticleDistribution::AddHistSet(const Char_t *name, const C
                     Form("%s (Net %s)/ Sum Dist %s;Centrality;(N_{%s} - N_{%s})/(N_{%s} + N_{%s})", title, fHelper->GetParticleTitle(1).Data(), sPtTitle.Data(),
                          fHelper->GetParticleTitleLatex(1).Data(),fHelper->GetParticleTitleLatex(0).Data(),fHelper->GetParticleTitleLatex(1).Data(),
                          fHelper->GetParticleTitleLatex(0).Data()), 
-                    24, -0.5, 11.5, 801, -50.5, 50.49));
+                    24, -0.5, 11.5, 801, -20.5, 20.49));
   
   if (sName.Contains("fHControlMC")) {
     for (Int_t idxPart = 0; idxPart < 2; ++idxPart) {
index a3c9aba405d0b639f17fd74da2f0e8541ea407e7..5766840cd8265156e586fa5bb2c4466dc2fa5cb0 100644 (file)
@@ -60,15 +60,13 @@ AliAnalysisNetParticleEffCont::AliAnalysisNetParticleEffCont() :
 AliAnalysisNetParticleEffCont::~AliAnalysisNetParticleEffCont() {
   // Destructor
 
-  if (fLabelsRec){
-
+  if (fLabelsRec) {
     if (fLabelsRec[0])
       delete[] (fLabelsRec[0]);
-
     if (fLabelsRec[1])
       delete[] (fLabelsRec[1]);
-
-    delete[] fLabelsRec;
+    if (fLabelsRec)
+      delete[] fLabelsRec;
   }
 }
 
@@ -345,11 +343,11 @@ void AliAnalysisNetParticleEffCont::FillMCLabels() {
     
     // -- Check if accepted - AOD
     if (fAOD){
-      if(!(dynamic_cast<AliAODTrack*>(track))){
+      if(!(dynamic_cast<AliAODTrack*>(track))) {
        AliError("Pointer to dynamic_cast<AliAODTrack*>(track) = ZERO");
        continue;
       }
-      if(!((dynamic_cast<AliAODTrack*>(track))->TestFilterBit(fAODtrackCutBit))) 
+      if(!((dynamic_cast<AliAODTrack*>(track))->TestFilterBit(fAODtrackCutBit)))
        continue;
     }
 
@@ -499,7 +497,7 @@ void AliAnalysisNetParticleEffCont::CheckContTrackAOD(Int_t label, Float_t sign,
   // -- If no PID is required 
   //    > only check for Primaries and Secondaries  
   else {
-    // Check if is physical primary -> all ok 
+   // Check if is physical primary -> all ok 
     if (particle->IsPhysicalPrimary())
       return;
     
@@ -510,13 +508,9 @@ void AliAnalysisNetParticleEffCont::CheckContTrackAOD(Int_t label, Float_t sign,
 
   // -- Get PDG Charge
   Float_t contSign = 0.;
-  // Crashing (MW)? --> why do we need the PDG charge? 
-  // if      ((TDatabasePDG::Instance()->GetParticle(particle->PdgCode()))->Charge() == 0.) contSign =  0.;
-  // else if ((TDatabasePDG::Instance()->GetParticle(particle->PdgCode()))->Charge() <  0.) contSign = -1.;    
-  // else if ((TDatabasePDG::Instance()->GetParticle(particle->PdgCode()))->Charge() >  0.) contSign =  1.;    
-   if      (particle->Charge() == 0.) contSign =  0.;
-   else if (particle->Charge() <  0.) contSign = -1.;  
-   else if (particle->Charge() >  0.) contSign =  1.;
+  if      (particle->Charge() == 0.) contSign =  0.;
+  else if (particle->Charge()  < 0.) contSign = -1.;
+  else if (particle->Charge()  > 0.) contSign =  1.;
 
   // -- Get contaminating particle
   Float_t contPart = 0;
@@ -582,6 +576,7 @@ void AliAnalysisNetParticleEffCont::FillMCEffHist() {
     //    > skip check if PID is not required
     if (fHelper->GetUsePID() && TMath::Abs(particle->GetPdgCode()) != fPdgCode){
       printf("SHOULD NOT HAPPEN !!!\n"); // JMT
+      printf("%d %d !!!\n", particle->GetPdgCode(), fPdgCode ); // JMT
       continue;
     }
     
@@ -638,6 +633,8 @@ void AliAnalysisNetParticleEffCont::FillMCEffHistAOD() {
   // Fill efficiency THnSparse for AODs
   
   Int_t nPart  = fArrayMC->GetEntriesFast();
+  Float_t etaRange[2];
+  fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]);
 
   for (Int_t idxMC = 0; idxMC < nPart; ++idxMC) {
     
@@ -649,7 +646,9 @@ void AliAnalysisNetParticleEffCont::FillMCEffHistAOD() {
 
     // -- Check rapidity window
     Double_t yMC;
-    if (!fHelper->IsParticleAcceptedRapidity((TParticle*)particle, yMC))  // MW : das geht? wenn ja use c++ cast
+    if (!fHelper->GetUsePID()) 
+      yMC = etaRange[1];
+    if (!fHelper->IsParticleAcceptedRapidity(particle, yMC))
       continue;
 
     // -- Check if probeParticle / anti-probeParticle 
index f7530c71934dc9635dbcfb87d551919592dd7fc8..eb6d91a2fc256f5c6693b6db080d248e08f7e8b5 100644 (file)
@@ -150,8 +150,8 @@ AliAnalysisNetParticleHelper::~AliAnalysisNetParticleHelper() {
 //________________________________________________________________________
 void AliAnalysisNetParticleHelper::SetParticleSpecies(AliPID::EParticleType pid) {
   // -- Set particle species (ID, Name, Title, Title LATEX)
-  
-  if ( Int_t(pid) < 0 || Int_t(pid) >= AliPID::kSPECIES) {
+
+  if ( Int_t(pid) < 0 || Int_t(pid) >= AliPID::kSPECIES) {  
     AliWarning("Particle ID not in AliPID::kSPECIES --> Set to protons");
     pid = AliPID::kProton;
   }  
@@ -288,24 +288,20 @@ Int_t AliAnalysisNetParticleHelper::SetupEvent(AliESDInputHandler *esdHandler, A
   if(esdHandler){
     fInputEventHandler = static_cast<AliInputEventHandler*>(esdHandler);
     fESD               = dynamic_cast<AliESDEvent*>(fInputEventHandler->GetEvent());
-    
     if (!fESD) {
       AliError("ESD event handler not available");
       return -1;
     }
-
   }
 
   // -- Get AOD objects
   else if(aodHandler){
     fInputEventHandler = static_cast<AliInputEventHandler*>(aodHandler);
     fAOD               = dynamic_cast<AliAODEvent*>(fInputEventHandler->GetEvent());
-
     if (!fAOD) {
       AliError("AOD event handler not available");
       return -1;
     }
-
   }
 
   // -- Get Common objects
@@ -331,7 +327,7 @@ Int_t AliAnalysisNetParticleHelper::SetupEvent(AliESDInputHandler *esdHandler, A
     AliError("Centrality not available");
     return -1;
   }
-  
+
   Int_t centBin = centrality->GetCentralityClass10("V0M");
   if (centBin == 0)
     fCentralityBin = centrality->GetCentralityClass5("V0M");
@@ -548,6 +544,7 @@ Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedBasicNeutral(AliAODMCPart
         
   return kTRUE;
 }
+
 //________________________________________________________________________
 Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedRapidity(TParticle *particle, Double_t &yP) {
   // -- Check if particle is accepted
@@ -580,6 +577,38 @@ Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedRapidity(TParticle *parti
   return kTRUE;
 }
 
+//________________________________________________________________________
+Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedRapidity(AliAODMCParticle *particle, Double_t &yP) {
+  // -- Check if AOD particle is accepted
+  // > in rapidity
+  // > if no pid : 
+  // >   use yP as input for the pseudo-rapdity_MAX to be checked
+  // > return 0 if not accepted
+
+  if (!fUsePID) {
+    Bool_t isAccepted = kFALSE;
+    if (TMath::Abs(particle->Eta()) < yP)
+      isAccepted = kTRUE;
+    yP = particle->Eta();
+    return isAccepted;
+  }
+
+  Double_t mP = AliPID::ParticleMass(fParticleSpecies);
+
+  // -- Calculate rapidities and kinematics
+  Double_t p  = particle->P();
+  Double_t pz = particle->Pz();
+
+  Double_t eP = TMath::Sqrt(p*p + mP*mP);
+  yP          = 0.5 * TMath::Log((eP + pz) / (eP - pz));  
+
+  // -- Check Rapidity window
+  if (TMath::Abs(yP) > fRapidityMax)
+    return kFALSE;
+  
+  return kTRUE;
+}
+
 //_____________________________________________________________________________
 Bool_t AliAnalysisNetParticleHelper::IsParticleFindable(Int_t label) {
   // -- Check if MC particle is findable tracks
index 6ef0c3e765e9f5cf76eda3291f4b37b750f9a19e..353f9a7f5e922980daf6eec8ebf0eb421424d856 100644 (file)
@@ -133,6 +133,7 @@ class AliAnalysisNetParticleHelper : public TNamed {
  
   /** Check if MC particle is accepted for Rapidity */
   Bool_t IsParticleAcceptedRapidity(TParticle *particle, Double_t &yP);
+  Bool_t IsParticleAcceptedRapidity(AliAODMCParticle *particle, Double_t &yP);
 
   /** Check if MC particle is findable tracks */
   Bool_t IsParticleFindable(Int_t label);
index 9b8e202a8af1fef3ec87d7efe84479b0b85bbcb7..8ede77098ebb64f2fe1a05e5a7aa14db01c3d04e 100644 (file)
@@ -81,7 +81,8 @@ AliAnalysisTaskNetParticle::AliAnalysisTaskNetParticle(const char *name) :
 
   fHnQA(NULL),
 
-  fEtaMax(0.9),
+  fEtaMax(0.8),
+  fEtaMaxEff(0.9),
   fPtRange(),
   fPtRangeEff(),
 
@@ -327,6 +328,7 @@ Int_t AliAnalysisTaskNetParticle::Initialize() {
   fESDTrackCutsEff = static_cast<AliESDtrackCuts*>(fESDTrackCuts->Clone());
   fESDTrackCutsEff->SetName(Form("NetParticleCuts2010_%s_Eff",sModeName.Data()));
   fESDTrackCutsEff->SetPtRange(fPtRangeEff[0],fPtRangeEff[1]);                              // Acceptance
+  fESDTrackCutsBase->SetEtaRange(-1.*fEtaMaxEff, fEtaMaxEff);                               // Acceptance
 
   // ------------------------------------------------------------------
   // -- Initialize Helper
@@ -517,12 +519,12 @@ Int_t AliAnalysisTaskNetParticle::SetupMCEvent() {
 
   AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*> 
     (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
-
+  
   if (!mcH) {
     AliError("MC event handler not available");
     return -1;
   }
-  
+
   fMCEvent = mcH->MCEvent();
   if (!fMCEvent) {
     AliError("MC event not available");
index 651e260fa55d5a2430c58db772709013b194eaff..434e52320bd34c5aa1263ca24589a0913beb6d4b 100644 (file)
@@ -75,6 +75,7 @@ class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE {
   void SetModeQACreation(Int_t i)            {fModeQACreation   = i;}
  
   void SetEtaMax(Float_t f)                  {fEtaMax           = f;}
+  void SetEtaMaxEff(Float_t f)               {fEtaMaxEff        = f;}
   void SetPtRange(Float_t f1, Float_t f2)    {fPtRange[0]       = f1; fPtRange[1]    = f2;}
   void SetPtRangeEff(Float_t f1, Float_t f2) {fPtRangeEff[0]    = f1; fPtRangeEff[1] = f2;}
 
@@ -131,7 +132,7 @@ class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE {
    * ---------------------------------------------------------------------------------
    */
   
-  AliAnalysisNetParticleHelper       *fHelper;  // Helper class
+  AliAnalysisNetParticleHelper       *fHelper;  //  Helper class
   AliAnalysisNetParticleEffCont      *fEffCont; //! Efficiency and Contamination class
   AliAnalysisNetParticleDCA          *fDCA;     //! DCA class
   AliAnalysisNetParticleDistribution *fDist;    //! Distributions class
@@ -181,6 +182,7 @@ class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE {
   // -----------------------------------------------------------------------
 
   Float_t             fEtaMax;                 //  Max, absolut eta 
+  Float_t             fEtaMaxEff;              //  Max, absolut eta for efficiency
   Float_t             fPtRange[2];             //  Array of pt [min,max]
   Float_t             fPtRangeEff[2];          //  Array of pt [min,max] for efficiency
 
index 3a0889e986e3cd4e24962649fe1bc248da155e71..28d9bbad3fd7585a93ca095d8661309b94ef7a89 100644 (file)
Binary files a/PWGCF/EBYE/NetParticle/eff/effectiveCorrection.root and b/PWGCF/EBYE/NetParticle/eff/effectiveCorrection.root differ
index 5f79e624fba3f0091940f3b187c34e859d2d9af5..5f0ef532a6f408f1f068cf350b695a3632e6e7dc 100644 (file)
@@ -13,9 +13,7 @@
  *     isCreateCSC    -> Prepare for CrossSectionCorrection 
  *                       - requires isModeEff to be set
  *                       - Proton only
-*  JMT add mode isModeAOD
-
+ *     isModeAOD      -> Use AOD input 
  * 
  * - OUTPUT CONTAINER : #N = 5
  *   (1) - Standard Output, Distributions
@@ -104,7 +102,7 @@ AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton",
   if (sName.Contains("Proton")) {
     helper->SetParticleSpecies(AliPID::kProton);
     helper->SetControlParticleSpecies(3122, kTRUE, "Lambda");
-    minPt    = 0.4;    maxPt    = 2.2;
+    minPt    = 0.4;    maxPt    = 0.8;
     minPtEff = 0.2;    maxPtEff = 2.6;
     minPtForTOF = 0.8;
     nSigmaTPC = 2.5;   nSigmaTOF = 2.5;
@@ -114,21 +112,21 @@ AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton",
   }
   else if (sName.Contains("Pion")) {
     helper->SetParticleSpecies(AliPID::kPion);
-    minPt    = 0.3;    maxPt    = 0.9;
+    minPt    = 0.25;   maxPt    = 0.7;
     minPtEff = 0.2;    maxPtEff = 1.2;
     minPtForTOF = 0.8;
     nSigmaTPC = 2.5;   nSigmaTOF = 2.5;
   }
   else if (sName.Contains("Kaon")) {
     helper->SetParticleSpecies(AliPID::kKaon);
-    minPt    = 0.5;    maxPt    = 0.8;
+    minPt    = 0.5;    maxPt    = 1.4;
     minPtEff = 0.1;    maxPtEff = 2.5;
     minPtForTOF = 0.5;
     nSigmaTPC = 2.5;   nSigmaTOF = 2.5;
   }
   else if (sName.Contains("Charge")) {
     helper->SetUsePID(kFALSE);
-    minPt    = 0.2;    maxPt    = 2.8;
+    minPt    = 0.3;    maxPt    = 2.5;
     minPtEff = 0.1;    maxPtEff = 3.0;
     minPtForTOF = -1.;
     nSigmaTPC = -1.;   nSigmaTOF = -1.;
@@ -144,10 +142,11 @@ AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton",
   // ----------------------------------------------
 
   // -- Set cut flags ...
-  task->SetESDTrackCutMode(0);     // => 0 = clean | 1 = dirty
+  task->SetESDTrackCutMode(0);              // => 0 = clean | 1 = dirty
 
   // -- Set analysis ranges
-  task->SetEtaMax(0.9);        
+  task->SetEtaMax(0.8);                     // eta cut
+  task->SetEtaMaxEff(0.9);                  // eta cut for efficiency
   task->SetPtRange(minPt, maxPt);           // pt cut range for the analysis
   task->SetPtRangeEff(minPtEff, maxPtEff);  // pt cut range for the correction / efficiency / contamination creation