]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added histograms for dEdx and timing (Ruben)
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 17 Oct 2011 15:07:39 +0000 (15:07 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 17 Oct 2011 15:07:39 +0000 (15:07 +0000)
PWG1/ITS/AliAnalysisTaskITSAlignQA.cxx
PWG1/ITS/AliAnalysisTaskITSAlignQA.h
PWG1/macros/AddTaskITSAlign.C

index ba5d5187c60050c58ac0ee6b1bf320d2ae46a529..afef378ed6a10e649121555775466c8265e74ad9 100644 (file)
@@ -12,6 +12,7 @@
 #include "AliITSCalibrationSDD.h"
 #include "AliITSresponseSDD.h"
 #include "AliGeomManager.h"
+#include "AliMultiplicity.h"
 #include <TSystem.h>
 #include <TTree.h>
 #include <TH1F.h>
@@ -69,6 +70,8 @@ AliAnalysisTaskITSAlignQA::AliAnalysisTaskITSAlignQA() : AliAnalysisTaskSE("SDD
   fMinTPCpts(70),
   fMinPt(0.5),
   fNPtBins(8),
+  fMinMult(0),
+  fMaxMult(1e9),
   fFitter(0),
   fRunNb(0),
   fOCDBLocation("local://$ALICE_ROOT/OCDB")
@@ -133,12 +136,14 @@ void AliAnalysisTaskITSAlignQA::UserCreateOutputObjects() {
   fOutput->SetOwner();
   fOutput->SetName("OutputHistos");
 
-  fHistNEvents = new TH1F("hNEvents", "Number of processed events",4,-1.5,2.5);
+  fHistNEvents = new TH1F("hNEvents", "Number of processed events",kNEvStatBins,-0.5,kNEvStatBins-0.5);
   fHistNEvents->Sumw2();
   fHistNEvents->SetMinimum(0);
-  fHistNEvents->GetXaxis()->SetBinLabel(2,"All Events");
-  fHistNEvents->GetXaxis()->SetBinLabel(3,"After Vertex cut");
-  fHistNEvents->GetXaxis()->SetBinLabel(4,"After Pileup cut");
+  fHistNEvents->GetXaxis()->SetBinLabel(kEvAll+1,"All Events");
+  fHistNEvents->GetXaxis()->SetBinLabel(kEvCnt+1,"After Centrality cut");
+  fHistNEvents->GetXaxis()->SetBinLabel(kEvVtx+1,"After Vertex cut");
+  fHistNEvents->GetXaxis()->SetBinLabel(kEvPlp+1,"After Pileup cut");
+  fHistNEvents->GetXaxis()->SetBinLabel(kNTracks+1,"Tracks Accepted");
   fOutput->Add(fHistNEvents);
 
   fHistPtAccept = new TH1F("hPtAccept","Pt distrib of accepted tracks",50,0.,5.);
@@ -324,19 +329,23 @@ void AliAnalysisTaskITSAlignQA::UserExec(Option_t *)
     return;
   }
   //
+  if (!AcceptCentrality(esd)) return;
+  fHistNEvents->Fill(kEvCnt);
+
   const AliESDVertex* vtx=0,*vtxSPD=0;
-  fHistNEvents->Fill(0);
+  fHistNEvents->Fill(kEvAll);
   if (fUseVertex) {  // check the vertex if it is requested as an extra point
     vtx = esd->GetPrimaryVertex();
     vtxSPD = esd->GetPrimaryVertexSPD();
     if (!AcceptVertex(vtx,vtxSPD)) return;
   }
-  fHistNEvents->Fill(1);
+
+  fHistNEvents->Fill(kEvVtx);
   if (fRemovePileupWithSPD){
     // skip events tagged by SPD as pileup
     if(esd->IsPileupFromSPD()) return;
   }
-  fHistNEvents->Fill(2);
+  fHistNEvents->Fill(kEvPlp);
 
   //
   fFitter->SetBz(esd->GetMagneticField());
@@ -355,6 +364,8 @@ void AliAnalysisTaskITSAlignQA::UserExec(Option_t *)
     if(!array) continue;
     arrayITS = PrepareTrack(array, vtx);
     //
+    fHistNEvents->Fill(kNTracks);
+    //
     Int_t npts  = arrayITS->GetNPoints();
     Int_t npts1 = fUseVertexForZOnly ? npts-1 : npts;
     //
@@ -615,7 +626,8 @@ void AliAnalysisTaskITSAlignQA::Terminate(Option_t */*option*/)
 
   fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("hNEvents"));
   if(fHistNEvents){
-    printf("Number of analyzed events = %d\n",(Int_t)(fHistNEvents->GetBinContent(2)));
+    printf("Number of analyzed events = %d, %d tracks accepted\n",
+          (Int_t)fHistNEvents->GetBinContent(kEvAcc+1),(Int_t)fHistNEvents->GetBinContent(kNTracks+1));
   }else{
     printf("Warning: pointer to fHistNEvents is NULL\n");
   }
@@ -694,3 +706,15 @@ void AliAnalysisTaskITSAlignQA::PrepareVertexConstraint(const AliESDVertex* vtx,
 }
 
 
+//_______________________________________________________________________________________
+Bool_t AliAnalysisTaskITSAlignQA::AcceptCentrality(const AliESDEvent *esd) const
+{
+  // check if events is in the required multiplicity range
+  //
+  const AliMultiplicity *alimult = esd->GetMultiplicity();
+  Int_t nclsSPDouter=0;
+  if(alimult) nclsSPDouter = alimult->GetNumberOfITSClusters(1);
+  if(nclsSPDouter<fMinMult || nclsSPDouter>fMaxMult) return kFALSE;
+  //
+  return kTRUE;
+}
index 2889993ac653e86c2cbf30c812e0845d5d4bf0b8..be70f226e3895c652ccad7defb3329de07a78cb6 100644 (file)
@@ -28,7 +28,7 @@ class AliTrackPointArray;
 class AliAnalysisTaskITSAlignQA : public AliAnalysisTaskSE {
 
  public:
-
+  enum {kEvAll=0,kEvCnt,kEvVtx,kEvPlp,kNTracks,kNEvStatBins,  kEvAcc=kEvPlp};
   AliAnalysisTaskITSAlignQA();
   virtual ~AliAnalysisTaskITSAlignQA();
 
@@ -83,14 +83,15 @@ class AliAnalysisTaskITSAlignQA : public AliAnalysisTaskSE {
   void SetUseVertex(Bool_t v=kTRUE)         { fUseVertex = v; }
   void SetUseVertexForZOnly(Bool_t v=kTRUE) { fUseVertexForZOnly = v; } // Use the vertex for SDD Z residuals only
   void SetRemovePileupWithSPD(Bool_t opt=kTRUE) { fRemovePileupWithSPD = opt; }
-  
-  void     SetOCDBInfo(UInt_t runNb, const char *location) {
+  void SetMinMaxMult(Double_t mn=0,Double_t mx=1e9) {fMinMult=mn; fMaxMult=mx;} 
+  void SetOCDBInfo(UInt_t runNb, const char *location) {
     fRunNb=runNb; 
     fOCDBLocation=location;
   }
 
   Bool_t   AcceptTrack(const AliESDtrack * track);
   Bool_t   AcceptVertex(const AliESDVertex * vtx, const AliESDVertex * vtxSPD);
+  Bool_t   AcceptCentrality(const AliESDEvent *esd) const;
   void     CreateSPDHistos();
   void     CreateSDDHistos();
   void     CreateSSDHistos();
@@ -159,13 +160,15 @@ class AliAnalysisTaskITSAlignQA : public AliAnalysisTaskSE {
   Int_t    fMinTPCpts;        // Minimum number of TPC points per track
   Float_t  fMinPt;            // Minimum pt to accept tracks
   Int_t    fNPtBins;          // number of pt bins
+  Double_t fMinMult;          // min centrality cut
+  Double_t fMaxMult;          // max centrality cut
   Double_t fPtBinLimits[kMaxPtBins+1];  // limits of Pt bins
 
   AliITSTPArrayFit* fFitter;  // Track Point fitter
   Int_t fRunNb;               // Run number
   TString fOCDBLocation;      // OCDB location
 
-  ClassDef(AliAnalysisTaskITSAlignQA,4);
+  ClassDef(AliAnalysisTaskITSAlignQA,5);
 };
 
 
index c14c4972362298480904f62c6592e2d45ce8f017..6fbf5c128460c0e8ad993d77f2d532c58779cdb6 100644 (file)
@@ -1,4 +1,4 @@
-AliAnalysisTaskITSAlignQA *AddTaskITSAlign(Int_t nrun, Int_t year){
+AliAnalysisTaskITSAlignQA *AddTaskITSAlign(Int_t nrun, Int_t year, Bool_t pbpb=kFALSE) {
 
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
@@ -22,7 +22,20 @@ AliAnalysisTaskITSAlignQA *AddTaskITSAlign(Int_t nrun, Int_t year){
   //  taskali->SelectCollisionCandidates();
   taskali->SetOCDBInfo(nrun,Form("alien://folder=/alice/data/%d/OCDB",year)) ; 
   mgr->AddTask(taskali);
-  
+  //  
+  taskali->SetUseVertex(kTRUE);
+  taskali->SetUseVertexForZOnly(kFALSE);
+  taskali->SetMinMaxMult(0.,1070.);
+  if (pbpb) {
+    //    taskali->SetMinMaxMult(20.,1070.);
+    taskali->SetRemovePileupWithSPD(kFALSE);
+    //
+    //    taskali->SetDoSPDResiduals(kFALSE);
+    //    taskali->SetDoSDDResiduals(kFALSE);
+    //    taskali->SetDoSSDResiduals(kFALSE);
+    //
+  }
+  //
   TString outputFileName = AliAnalysisManager::GetCommonFileName();
   outputFileName += ":ITSAlignQA";