]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdPt/AlidNdPtCutAnalysis.cxx
removed duplications in AlidNdPtHelper and AliPWG0Helper and small changes
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtCutAnalysis.cxx
index b40c27c94086ed7632e0b66ecd81ca2222e33770..2dab33765b807805534f656b4b89a31b2ebd581b 100644 (file)
@@ -31,6 +31,8 @@
 #include "AlidNdPtEventCuts.h"\r
 #include "AlidNdPtAcceptanceCuts.h"\r
 \r
+#include "AliPWG0Helper.h"\r
+#include "AlidNdPtHelper.h"\r
 #include "AlidNdPtCutAnalysis.h"\r
 \r
 using namespace std;\r
@@ -156,26 +158,29 @@ void AlidNdPtCutAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent * cons
     return;\r
   }\r
 \r
-  // trigger definition\r
-  Bool_t isEventTriggered = AlidNdPtHelper::IsEventTriggered(esdEvent->GetTriggerMask(), GetTrigger());\r
-  //if(!isEventTriggered) printf("no MB1 trigger ... \n");\r
-\r
-  // cuts\r
+  // get selection cuts\r
   AlidNdPtEventCuts *evtCuts = GetEventCuts(); \r
   AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); \r
   AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); \r
 \r
-  if(!evtCuts || !accCuts || !esdTrackCuts) {\r
+  if(!evtCuts || !accCuts  || !esdTrackCuts) {\r
     AliDebug(AliLog::kError, "cuts not available");\r
     return;\r
   }\r
 \r
+  // trigger selection\r
+  Bool_t isEventTriggered = kTRUE;\r
+  if(evtCuts->IsTriggerRequired())  {\r
+    isEventTriggered = AliPWG0Helper::IsEventTriggered(esdEvent->GetTriggerMask(), GetTrigger());\r
+  }\r
+\r
   // use MC information\r
   AliHeader* header = 0;\r
   AliGenEventHeader* genHeader = 0;\r
   AliStack* stack = 0;\r
   TArrayF vtxMC(3);\r
-  AlidNdPtHelper::MCProcessType evtType = AlidNdPtHelper::kInvalidProcess;\r
+  //AlidNdPtHelper::MCProcessType evtType = AlidNdPtHelper::kInvalidProcess;\r
+  AliPWG0Helper::MCProcessType evtType = AliPWG0Helper::kInvalidProcess;\r
 \r
   if(IsUseMCInfo())\r
   {\r
@@ -199,7 +204,7 @@ void AlidNdPtCutAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent * cons
     }\r
 \r
     // get event type (ND=0x1, DD=0x2, SD=0x4)\r
-    evtType = AlidNdPtHelper::GetEventProcessType(header);\r
+    evtType = AliPWG0Helper::GetEventProcessType(header);\r
     AliDebug(AliLog::kDebug+1, Form("Found process type %d", evtType));\r
 \r
     // get MC vertex\r
@@ -217,10 +222,12 @@ void AlidNdPtCutAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent * cons
   } // end bUseMC\r
 \r
   // get reconstructed vertex  \r
-  const AliESDVertex* vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(), kFALSE, kTRUE, kTRUE); // redo TPC vertex & vertex constraints\r
+  Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex();\r
+  Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint();\r
+  const AliESDVertex* vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
   if(!vtxESD) return; \r
 \r
-  Bool_t isRecVertex = AlidNdPtHelper::TestVertex(vtxESD, GetAnalysisMode(), kFALSE);  // should be moved to AcceptEvent\r
+  Bool_t isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, GetAnalysisMode(), kFALSE);\r
   Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex;\r
 \r
   TObjArray *allChargedTracks=0;\r
@@ -230,8 +237,7 @@ void AlidNdPtCutAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent * cons
   if(isEventOK && isEventTriggered)\r
   {\r
     // get all charged tracks\r
-    allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,vtxESD,GetAnalysisMode());\r
-    //allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());\r
+    allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());\r
     if(!allChargedTracks) return;\r
 \r
     Int_t entries = allChargedTracks->GetEntries();\r
@@ -243,7 +249,6 @@ void AlidNdPtCutAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent * cons
       FillHistograms(track, stack);\r
       multAll++;\r
     }\r
-  } \r
 \r
   Double_t vRecEventHist[5] = {vtxESD->GetXv(),vtxESD->GetYv(),vtxESD->GetZv(),vtxESD->GetZRes(),multAll};\r
   fRecEventHist->Fill(vRecEventHist);\r
@@ -252,6 +257,7 @@ void AlidNdPtCutAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent * cons
     Double_t vRecMCEventHist[5] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetYv()-vtxMC[1],vtxESD->GetZv()-vtxMC[2],multAll};\r
     fRecMCEventHist->Fill(vRecMCEventHist);\r
   }\r
+  }\r
 \r
   if(allChargedTracks) delete allChargedTracks; allChargedTracks = 0;\r
 }\r
@@ -263,8 +269,8 @@ void AlidNdPtCutAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *
   // Fill ESD track and MC histograms \r
   //\r
   if(!esdTrack) return;\r
+  if(esdTrack->Charge() == 0.) return;\r
 \r
-  //Float_t q = esdTrack->Charge();\r
   Float_t pt = esdTrack->Pt();\r
   Float_t eta = esdTrack->Eta();\r
   Float_t phi = esdTrack->Phi();\r
@@ -287,11 +293,17 @@ void AlidNdPtCutAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *
   //\r
   // Fill rec vs MC information\r
   //\r
-  if(!stack) return;\r
-  Int_t label = TMath::Abs(esdTrack->GetLabel()); \r
-  TParticle* particle = stack->Particle(label);\r
-  if(!particle) return;\r
-  Bool_t isPrim = stack->IsPhysicalPrimary(label);\r
+\r
+  Bool_t isPrim = kTRUE;\r
+\r
+  if(IsUseMCInfo()) {\r
+    if(!stack) return;\r
+    Int_t label = TMath::Abs(esdTrack->GetLabel()); \r
+    TParticle* particle = stack->Particle(label);\r
+    if(!particle) return;\r
+    if(particle->GetPDG() && particle->GetPDG()->Charge()==0.) return;\r
+    isPrim = stack->IsPhysicalPrimary(label);\r
+  }\r
 \r
   // fill histo\r
   Double_t vRecMCTrackHist[10] = {nClust,chi2PerCluster,clustPerFindClust,b[0],b[1],eta,phi,pt,isKink,isPrim}; \r
@@ -364,6 +376,8 @@ void AlidNdPtCutAnalysis::Analyse()
   Double_t minEta = accCuts->GetMinEta();\r
   Double_t maxEta = accCuts->GetMaxEta()-0.00001;\r
 \r
+  Double_t maxDCAr = accCuts->GetMaxDCAr();\r
+\r
   //\r
   // Create rec. event histograms\r
   //\r
@@ -375,10 +389,16 @@ void AlidNdPtCutAnalysis::Analyse()
   h2D->SetName("rec_xv_vs_zv");\r
   aFolderObj->Add(h2D);\r
 \r
-  h2D = (TH2D *)fRecEventHist->Projection(0,2);\r
+  h2D = (TH2D *)fRecEventHist->Projection(3,4);\r
   h2D->SetName("rec_resZv_vs_Mult");\r
   aFolderObj->Add(h2D);\r
 \r
+\r
+  //\r
+  // MC available\r
+  //\r
+  if(IsUseMCInfo()) {\r
+\r
   //\r
   // Create mc event histograms\r
   //\r
@@ -405,13 +425,22 @@ void AlidNdPtCutAnalysis::Analyse()
   h2D->SetName("rec_mc_deltaZv_vs_mult");\r
   aFolderObj->Add(h2D);\r
 \r
+  } // end use MC info \r
+\r
+\r
+\r
   //\r
   // Create rec-mc track track histograms \r
   //\r
 \r
   // DCA cuts\r
-  fRecMCTrackHist->GetAxis(3)->SetRangeUser(-0.3,0.3);\r
-  fRecMCTrackHist->GetAxis(4)->SetRangeUser(-0.3,0.3);\r
+  fRecMCTrackHist->GetAxis(3)->SetRangeUser(-maxDCAr,maxDCAr);\r
+  fRecMCTrackHist->GetAxis(4)->SetRangeUser(-maxDCAr,maxDCAr);\r
+\r
+  h2D = (TH2D *)fRecMCTrackHist->Projection(7,5);\r
+  h2D->SetName("pt_vs_eta");\r
+  aFolderObj->Add(h2D);\r
+\r
   fRecMCTrackHist->GetAxis(7)->SetRangeUser(minPt,maxPt);  \r
 \r
   h2D = (TH2D *)fRecMCTrackHist->Projection(0,5);\r
@@ -427,6 +456,8 @@ void AlidNdPtCutAnalysis::Analyse()
   aFolderObj->Add(h2D);\r
 \r
   //\r
+  fRecMCTrackHist->GetAxis(7)->SetRangeUser(minEta,maxEta);  \r
+\r
   h2D = (TH2D *)fRecMCTrackHist->Projection(0,6);\r
   h2D->SetName("nClust_vs_phi");\r
   aFolderObj->Add(h2D);\r
@@ -439,6 +470,10 @@ void AlidNdPtCutAnalysis::Analyse()
   h2D->SetName("ratio_nClust_nFindableClust_vs_phi");\r
   aFolderObj->Add(h2D);\r
 \r
+  h2D = (TH2D *)fRecMCTrackHist->Projection(5,6);\r
+  h2D->SetName("eta_vs_phi");\r
+  aFolderObj->Add(h2D);\r
+\r
   //\r
   fRecMCTrackHist->GetAxis(7)->SetRangeUser(0.0,maxPt);  \r
 \r
@@ -454,13 +489,18 @@ void AlidNdPtCutAnalysis::Analyse()
   h2D->SetName("ratio_nClust_nFindableClust_vs_pt");\r
   aFolderObj->Add(h2D);\r
 \r
+  h2D = (TH2D *)fRecMCTrackHist->Projection(6,7);\r
+  h2D->SetName("phi_vs_pt");\r
+  aFolderObj->Add(h2D);\r
+\r
+\r
   // fiducial volume\r
   fRecMCTrackHist->GetAxis(5)->SetRangeUser(minEta,maxEta);  \r
   fRecMCTrackHist->GetAxis(7)->SetRangeUser(minPt,maxPt);  \r
 \r
   // DCA cuts\r
-  fRecMCTrackHist->GetAxis(3)->SetRangeUser(-0.3,0.3);\r
-  fRecMCTrackHist->GetAxis(4)->SetRangeUser(-0.3,0.3);\r
+  fRecMCTrackHist->GetAxis(3)->SetRangeUser(-maxDCAr,maxDCAr);\r
+  fRecMCTrackHist->GetAxis(4)->SetRangeUser(-maxDCAr,maxDCAr);\r
 \r
   h2D = (TH2D *)fRecMCTrackHist->Projection(0,1);\r
   h2D->SetName("nClust_vs_chi2PerClust");\r
@@ -471,7 +511,7 @@ void AlidNdPtCutAnalysis::Analyse()
   aFolderObj->Add(h2D);\r
 \r
   // DCAy cuts\r
-  fRecMCTrackHist->GetAxis(3)->SetRangeUser(-10.0,10.0);\r
+  fRecMCTrackHist->GetAxis(3)->SetRange(1,fRecMCTrackHist->GetAxis(3)->GetNbins());\r
   fRecMCTrackHist->GetAxis(4)->SetRangeUser(-1.0,1.0);\r
 \r
   // sec\r
@@ -488,7 +528,7 @@ void AlidNdPtCutAnalysis::Analyse()
 \r
   // DCAz cuts\r
   fRecMCTrackHist->GetAxis(3)->SetRangeUser(-1.0,1.0);\r
-  fRecMCTrackHist->GetAxis(4)->SetRangeUser(-10.0,10.0);\r
+  fRecMCTrackHist->GetAxis(4)->SetRange(1,fRecMCTrackHist->GetAxis(4)->GetNbins());\r
 \r
   // sec\r
   fRecMCTrackHist->GetAxis(9)->SetRange(1,1);\r