]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliGlobalQADataMaker.cxx
Added ptHard to the information in the AliAODMCHeader, filled in the AODHandler
[u/mrichter/AliRoot.git] / STEER / AliGlobalQADataMaker.cxx
index 158b3512aedffab4c723c1abdf11251747da3184..26d43da436a609dfdbf7126f830b3d5c6bb9d1c3 100644 (file)
@@ -8,19 +8,36 @@
 #include <TPDGCode.h>
 #include <TH1F.h>
 
+#include "AliQAChecker.h"
 #include "AliGlobalQADataMaker.h"
 #include "AliGeomManager.h"
 #include "AliESDEvent.h"
 #include "AliESDv0.h"
+#include "AliRawReader.h"
 
 ClassImp(AliGlobalQADataMaker)
  
+//____________________________________________________________________________ 
+void AliGlobalQADataMaker::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
+{
+  //Detector specific actions at end of cycle
+  // do the QA checking
+  AliQAChecker::Instance()->Run(AliQAv1::kGLOBAL, task, list) ;  
+}
+
+//____________________________________________________________________________ 
+void AliGlobalQADataMaker::InitRaws()
+{
+  // create Raws histograms in Raws subdir
+}
+
+//____________________________________________________________________________ 
 void AliGlobalQADataMaker::InitRecPoints() {
   //------------------------------------------------------
   // This function books the histograms of *track*residuals*
   // as a part of global QA
   //------------------------------------------------------
-  Char_t *name[]={
+  const Char_t *name[]={
     "SPD1 residuals Y","SPD1 residuals Z",
     "SPD2 residuals Y","SPD2 residuals Z",
     "SDD1 residuals Y","SDD1 residuals Z",
@@ -57,8 +74,37 @@ void AliGlobalQADataMaker::InitRecPoints() {
     h=new TH1F(name[i+1],name[i+1],100,-5.,5.);
     Add2RecPointsList(h,i+1);    
   }
+
+  Add2RecPointsList(
+  new TH1F("SSD1 absolute residuals Y for Z<0 (cm)",
+           "SSD1 absolute residuals Y for Z<0 (cm)",100,-2.,2.),40);
+  Add2RecPointsList(
+  new TH1F("SSD1 absolute residuals Z for Z<0 (cm)",
+           "SSD1 absolute residuals Z for Z<0 (cm)",100,-2.,2.),41);
+  Add2RecPointsList(
+  new TH1F("SSD1 absolute residuals Y for Z>0 (cm)",
+           "SSD1 absolute residuals Y for Z>0 (cm)",100,-2.,2.),42);
+  Add2RecPointsList(
+  new TH1F("SSD1 absolute residuals Z for Z>0 (cm)",
+           "SSD1 absolute residuals Z for Z>0 (cm)",100,-2.,2.),43);
+
+
+  Add2RecPointsList(
+  new TH1F("SSD2 absolute residuals Y for Z<0 (cm)",
+           "SSD2 absolute residuals Y for Z<0 (cm)",100,-3.,3.),44);
+  Add2RecPointsList(
+  new TH1F("SSD2 absolute residuals Z for Z<0 (cm)",
+           "SSD2 absolute residuals Z for Z<0 (cm)",100,-3.,3.),45);
+  Add2RecPointsList(
+  new TH1F("SSD2 absolute residuals Y for Z>0 (cm)",
+           "SSD2 absolute residuals Y for Z>0 (cm)",100,-3.,3.),46);
+  Add2RecPointsList(
+  new TH1F("SSD2 absolute residuals Z for Z>0 (cm)",
+           "SSD2 absolute residuals Z for Z>0 (cm)",100,-3.,3.),47);
+  
 }
 
+//____________________________________________________________________________ 
 void AliGlobalQADataMaker::InitESDs() {
   //------------------------------------------------------
   // This function books the ESD QA histograms
@@ -66,7 +112,7 @@ void AliGlobalQADataMaker::InitESDs() {
   //------------------------------------------------------
 
   {// Cluster related QA
-  Char_t *name[]={
+  const Char_t *name[]={
     "Fraction of the assigned clusters in ITS",
     "Fraction of the assigned clusters in TPC",
     "Fraction of the assigned clusters in TRD"
@@ -77,16 +123,16 @@ void AliGlobalQADataMaker::InitESDs() {
   }
 
   {// Track related QA
-  Char_t *name[]={
+  const Char_t *name[]={
     "Track azimuthal distribution (rad)",                   // kTrk0
     "Track pseudo-rapidity distribution",                   // kTrk1
-    "TPC: track momentum distribution (GeV/c)",             // kTrk2
-    "TPC-ITS matched: track momentum distribution (GeV/c)", // kTrk3
-    "TPC-TOF matched: track momentum distribution (GeV/c)", // kTrk4
+    "TPC: track momentum distribution (GeV)",               // kTrk2
+    "TPC-ITS matched: track momentum distribution (GeV)",   // kTrk3
+    "TPC-TOF matched: track momentum distribution (GeV)",   // kTrk4
     "TPC-ITS track-matching probability",                   // kTrk5
     "TPC-TOF track-matching probability"                    // kTrk6
   };
-  Add2ESDsList(new TH1F(name[0],name[0],100,-0.02,6.30),kTrk0);
+  Add2ESDsList(new TH1F(name[0],name[0],100, 0.,TMath::TwoPi()),kTrk0);
   Add2ESDsList(new TH1F(name[1],name[1],100,-2.00,2.00),kTrk1);
   Add2ESDsList(new TH1F(name[2],name[2],50,  0.20,5.00),kTrk2);
   Add2ESDsList(new TH1F(name[3],name[3],50,  0.20,5.00),kTrk3);
@@ -96,18 +142,22 @@ void AliGlobalQADataMaker::InitESDs() {
   }
 
   {// V0 related QA
-  Char_t *name[]={
-    "K0s mass (GeV)",
-    "Lambda0 + Lambda0Bar mass (GeV)"
+  const Char_t *name[]={
+    "On-the-fly K0s mass (GeV)",
+    "Offline K0s mass (GeV)",
+    "On-the-fly Lambda0 + Lambda0Bar mass (GeV)",
+    "Offline Lambda0 + Lambda0Bar mass (GeV)"
   };
-  Add2ESDsList(new TH1F(name[0],name[0],50,  0.4477,0.5477),kV0s0);
-  Add2ESDsList(new TH1F(name[1],name[1],50,  1.0657,1.1657),kV0s1);
+  Add2ESDsList(new TH1F(name[0],name[0],50,  0.4477,0.5477),kK0on);
+  Add2ESDsList(new TH1F(name[1],name[1],50,  0.4477,0.5477),kK0off);
+  Add2ESDsList(new TH1F(name[2],name[2],50,  1.0657,1.1657),kL0on);
+  Add2ESDsList(new TH1F(name[3],name[3],50,  1.0657,1.1657),kL0off);
   }
 
   {// PID related QA
-  Char_t *name[]={
-    "ITS: dE/dx (ADC) for particles with momentum 0.4 - 0.5 (GeV/c)",
-    "TPC: dE/dx (ADC) for particles with momentum 0.4 - 0.5 (GeV/c)",
+  const Char_t *name[]={
+    "ITS: dEdx (ADC) for particles with momentum 0.4 - 0.5 (GeV)",
+    "TPC: dEdx (ADC) for particles with momentum 0.4 - 0.5 (GeV)",
     "TOF: tracking - measured (ps)"
   };
   Add2ESDsList(new TH1F(name[0],name[0],50,0.00,200.),kPid0);
@@ -117,11 +167,24 @@ void AliGlobalQADataMaker::InitESDs() {
 
 }
 
+//____________________________________________________________________________
+void AliGlobalQADataMaker::MakeRaws(AliRawReader* rawReader)
+{
+  //Fill prepared histograms with Raw digit properties
+  rawReader->Reset() ;
+
+}
+
+//____________________________________________________________________________ 
 void AliGlobalQADataMaker::MakeESDs(AliESDEvent * event) {
   //-----------------------------------------------------------
   // This function fills the ESD QA histograms
   // as a part of global QA
   //-----------------------------------------------------------
+  // Check id histograms already created for this Event Specie
+  if ( ! GetESDsData(kClr0) )
+    InitESDs() ;
+
   const AliESDEvent *esd=event;
 
   Int_t ntrk=esd->GetNumberOfTracks() ; 
@@ -137,7 +200,10 @@ void AliGlobalQADataMaker::MakeESDs(AliESDEvent * event) {
     if (track->IsOn(AliESDtrack::kTPCrefit)) {
       Int_t n =track->GetTPCNcls();
       Int_t nf=track->GetTPCNclsF();      // number of crossed TPC pad rows
-      GetESDsData(kClr1)->Fill(Float_t(n)/nf);
+      if (nf>0) {
+        Double_t val = n*1.0/nf; 
+        GetESDsData(kClr1)->Fill(val); 
+      }
     }
 
     if (track->IsOn(AliESDtrack::kTRDrefit)) {
@@ -154,13 +220,14 @@ void AliGlobalQADataMaker::MakeESDs(AliESDEvent * event) {
       if ((TMath::Abs(dz[0])<3.) && (TMath::Abs(dz[1])<3.)) { // beam pipe
         Double_t phi=track->Phi();
        GetESDsData(kTrk0)->Fill(phi);
-       Double_t y=track->Y();
+       Double_t y=track->Eta();
        GetESDsData(kTrk1)->Fill(y);
 
         if (TMath::Abs(y)<0.9) {
           GetESDsData(kTrk2)->Fill(p);
           if (track->IsOn(AliESDtrack::kITSrefit)) GetESDsData(kTrk3)->Fill(p);
-          if (track->IsOn(AliESDtrack::kTOFout)) GetESDsData(kTrk4)->Fill(p);
+         //if (track->IsOn(AliESDtrack::kTOFout)) GetESDsData(kTrk4)->Fill(p);
+          if (track->GetTOFsignal()>0) GetESDsData(kTrk4)->Fill(p);
        }
       }
     }
@@ -200,15 +267,24 @@ void AliGlobalQADataMaker::MakeESDs(AliESDEvent * event) {
 
     v0.ChangeMassHypothesis(kK0Short);
     mass=v0.GetEffMass();
-    GetESDsData(kV0s0)->Fill(mass);
+    if (v0.GetOnFlyStatus())
+       GetESDsData(kK0on)->Fill(mass);
+    else
+       GetESDsData(kK0off)->Fill(mass);
 
     v0.ChangeMassHypothesis(kLambda0);
     mass=v0.GetEffMass();
-    GetESDsData(kV0s1)->Fill(mass);
+    if (v0.GetOnFlyStatus())
+       GetESDsData(kL0on)->Fill(mass);
+    else
+       GetESDsData(kL0off)->Fill(mass);
 
     v0.ChangeMassHypothesis(kLambda0Bar);
     mass=v0.GetEffMass();
-    GetESDsData(kV0s1)->Fill(mass);
+    if (v0.GetOnFlyStatus())
+       GetESDsData(kL0on)->Fill(mass);
+    else
+       GetESDsData(kL0off)->Fill(mass);
   }
 
 }