]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCQADataMakerSim.cxx
Getter for subcorrections
[u/mrichter/AliRoot.git] / TPC / AliTPCQADataMakerSim.cxx
index 32fb22fcf8b78d2fe6f95e338b04f105526718f4..35447fd59c3d596a74fbe6e06e1e9379a3eb423d 100644 (file)
 #include "AliTPC.h"
 #include "AliTPCv2.h"
 #include "AliSimDigits.h"
+#include <TTree.h>
 
 ClassImp(AliTPCQADataMakerSim)
 
 //____________________________________________________________________________ 
 AliTPCQADataMakerSim::AliTPCQADataMakerSim() : 
-  AliQADataMakerSim(AliQA::GetDetName(AliQA::kTPC), 
-                   "TPC Sim Quality Assurance Data Maker"),
-  fHistDigitsADC(0),
-  fHistHitsNhits(0), 
-  fHistHitsElectrons(0), 
-  fHistHitsRadius(0),
-  fHistHitsPrimPerCm(0), 
-  fHistHitsElectronsPerCm(0) 
+  AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kTPC), 
+                   "TPC Sim Quality Assurance Data Maker")
 {
   // ctor
 }
 
 //____________________________________________________________________________ 
 AliTPCQADataMakerSim::AliTPCQADataMakerSim(const AliTPCQADataMakerSim& qadm) :
-  AliQADataMakerSim(),
-  fHistDigitsADC(0),
-  fHistHitsNhits(0), 
-  fHistHitsElectrons(0), 
-  fHistHitsRadius(0),
-  fHistHitsPrimPerCm(0), 
-  fHistHitsElectronsPerCm(0) 
+  AliQADataMakerSim()
 {
   //copy ctor 
   SetName((const char*)qadm.GetName()) ; 
@@ -78,14 +67,7 @@ AliTPCQADataMakerSim::AliTPCQADataMakerSim(const AliTPCQADataMakerSim& qadm) :
   // Associate class histogram objects to the copies in the list
   // Could also be done with the indexes
   //
-  fHistDigitsADC     = (TH1F*)fDigitsQAList->FindObject("hDigitsADC");
-
-  fHistHitsNhits     = (TH1F*)fHitsQAList->FindObject("hHitsNhits");
-  fHistHitsElectrons = (TH1F*)fHitsQAList->FindObject("hHitsElectrons");
-  fHistHitsRadius    = (TH1F*)fHitsQAList->FindObject("hHitsRadius");
-  fHistHitsPrimPerCm = (TH1F*)fHitsQAList->FindObject("hHitsPrimPerCm");
-  fHistHitsElectronsPerCm    = (TH1F*)fHitsQAList->FindObject("hHitsElectronsPerCm");
-}
+ }
 
 //__________________________________________________________________
 AliTPCQADataMakerSim& AliTPCQADataMakerSim::operator = (const AliTPCQADataMakerSim& qadm )
@@ -97,60 +79,69 @@ AliTPCQADataMakerSim& AliTPCQADataMakerSim::operator = (const AliTPCQADataMakerS
 }
  
 //____________________________________________________________________________ 
-void AliTPCQADataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray * list)
+void AliTPCQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
 {
   //Detector specific actions at end of cycle
   // do the QA checking
-  AliQAChecker::Instance()->Run(AliQA::kTPC, task, list) ;  
+  AliQAChecker::Instance()->Run(AliQAv1::kTPC, task, list) ;  
 }
 
 //____________________________________________________________________________ 
 void AliTPCQADataMakerSim::InitDigits()
 {
-  fHistDigitsADC = 
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  TH1F * histDigitsADC = 
     new TH1F("hDigitsADC", "Digit ADC distribution; ADC; Counts",
             1000, 0, 1000);
-  fHistDigitsADC->Sumw2();
-  Add2DigitsList(fHistDigitsADC, 0);
+  histDigitsADC->Sumw2();
+  Add2DigitsList(histDigitsADC, kDigitsADC, !expert, image);
+  //
+  ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
 }
 
 //____________________________________________________________________________ 
 void AliTPCQADataMakerSim::InitHits()
 {
-  fHistHitsNhits = 
-    new TH1F("hHitsNhits", "Interactions per primary track in the TPC volume; Number of primary interactions; Counts",
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  TH1F * histHitsNhits = 
+    new TH1F("hHitsNhits", "Interactions per track in the TPC volume; Number of interactions; Counts",
             100, 0, 10000);
-  fHistHitsNhits->Sumw2();
-  Add2HitsList(fHistHitsNhits, 0);
+  histHitsNhits->Sumw2();
+  Add2HitsList(histHitsNhits, kNhits, !expert, image);
 
-  fHistHitsElectrons = 
-    new TH1F("hHitsElectrons", "Electrons per interaction (primaries); Electrons; Counts",
+  TH1F * histHitsElectrons = 
+    new TH1F("hHitsElectrons", "Electrons per interaction; Electrons; Counts",
             300, 0, 300);
-  fHistHitsElectrons->Sumw2();
-  Add2HitsList(fHistHitsElectrons, 1);  
+  histHitsElectrons->Sumw2();
+  Add2HitsList(histHitsElectrons, kElectrons, !expert, image);  
 
-  fHistHitsRadius = 
-    new TH1F("hHitsRadius", "Position of interaction (Primary tracks only); Radius; Counts",
+  TH1F * histHitsRadius = 
+    new TH1F("hHitsRadius", "Position of interaction; Radius; Counts",
             300, 0., 300.);  
-  fHistHitsRadius->Sumw2();
-  Add2HitsList(fHistHitsRadius, 2);  
+  histHitsRadius->Sumw2();
+  Add2HitsList(histHitsRadius, kRadius, !expert, image);  
 
-  fHistHitsPrimPerCm = 
-    new TH1F("hHitsPrimPerCm", "Primaries per cm (Primary tracks only); Primaries; Counts",
+  TH1F * histHitsPrimPerCm = 
+    new TH1F("hHitsPrimPerCm", "Primaries per cm; Primaries; Counts",
             100, 0., 100.);  
-  fHistHitsPrimPerCm->Sumw2();
-  Add2HitsList(fHistHitsPrimPerCm, 3);  
+  histHitsPrimPerCm->Sumw2();
+  Add2HitsList(histHitsPrimPerCm, kPrimPerCm, !expert, image);  
 
-  fHistHitsElectronsPerCm = 
-    new TH1F("hHitsElectronsPerCm", "Electrons per cm (Primary tracks only); Electrons; Counts",
+  TH1F * histHitsElectronsPerCm = 
+    new TH1F("hHitsElectronsPerCm", "Electrons per cm; Electrons; Counts",
             300, 0., 300.);  
-  fHistHitsElectronsPerCm->Sumw2();
-  Add2HitsList(fHistHitsElectronsPerCm, 4);  
+  histHitsElectronsPerCm->Sumw2();
+  Add2HitsList(histHitsElectronsPerCm, kElectronsPerCm, !expert, image);  
+  //
+  ClonePerTrigClass(AliQAv1::kHITS); // this should be the last line
 }
 
 //____________________________________________________________________________
 void AliTPCQADataMakerSim::MakeDigits(TTree* digitTree)
 {
+
   TBranch* branch = digitTree->GetBranch("Segment");
   AliSimDigits* digArray = 0;
   branch->SetAddress(&digArray);
@@ -163,20 +154,24 @@ void AliTPCQADataMakerSim::MakeDigits(TTree* digitTree)
     
     if (digArray->First())
       do {
+        Float_t dig = digArray->CurrentDigit();
        
-       Float_t dig = digArray->CurrentDigit();
-       
-       fHistDigitsADC->Fill(dig);
+        FillDigitsData(kDigitsADC,dig);
       } while (digArray->Next());    
   }
+  //
+  IncEvCountCycleDigits();
+  IncEvCountTotalDigits();  
+  //
 }
 
 //____________________________________________________________________________
 void AliTPCQADataMakerSim::MakeHits(TTree * hitTree)
 {
   // make QA data from Hit Tree
   const Int_t nTracks = hitTree->GetEntries();
-  TBranch* branch = hitTree->GetBranch("TPC");  
+  TBranch* branch = hitTree->GetBranch("TPC2");
   AliTPCv2* tpc = (AliTPCv2*)gAlice->GetDetector("TPC");
   
   //
@@ -194,58 +189,70 @@ void AliTPCQADataMakerSim::MakeHits(TTree * hitTree)
       Float_t xold  = tpcHit->X();
       Float_t yold  = tpcHit->Y();
       Float_t zold  = tpcHit->Z(); 
-      Float_t radiusOld = TMath::Sqrt(xold*xold + yold*yold);
+      Float_t radiusOld = TMath::Sqrt(xold*xold + yold*yold); 
+      Int_t trackOld = tpcHit->GetTrack();
       Float_t q     = 0.;
+
       while(tpcHit) {
-       Float_t x = tpcHit->X();
-       Float_t y = tpcHit->Y();
-       Float_t z = tpcHit->Z(); 
-       Float_t radius = TMath::Sqrt(x*x + y*y);
+
+        Float_t x = tpcHit->X();
+        Float_t y = tpcHit->Y();
+        Float_t z = tpcHit->Z(); 
+        Float_t radius = TMath::Sqrt(x*x + y*y);
        
-       if(radius>50) { // Skip hits at interaction point
+        if(radius>50) { // Skip hits at interaction point
          
-         nHits++;
+          nHits++;
          
-         Int_t trackNo = tpcHit->GetTrack();
+          Int_t trackNo = tpcHit->GetTrack();
          
-         if(trackNo==n) { // primary track
-           
-           fHistHitsElectrons->Fill(tpcHit->fQ);
-           fHistHitsRadius->Fill(radius);
+         FillHitsData(kElectrons,tpcHit->fQ);
+         FillHitsData(kRadius,radius);
            
+         if(trackNo==trackOld) { // if the same track
+
            // find the new distance
            dist += TMath::Sqrt((x-xold)*(x-xold) + (y-yold)*(y-yold) + 
                                (z-zold)*(z-zold));
-           if(dist<1.){  
-             // add data to this 1 cm step
-             nprim++;  
-             q += tpcHit->fQ;
+           if(dist<1.){ // add data to this 1 cm step
              
-           } else{
-             // Fill the histograms normalized to per cm 
+             nprim++;  
+             q += tpcHit->fQ;        
+           } else{ // Fill the histograms normalized to per cm 
              
-             if(nprim==1)
-               cout << radius << ", " << radiusOld << ", " << dist << endl; 
+             // if(nprim==1)
+             //        cout << radius << ", " << radiusOld << ", " << dist << endl; 
              
-             fHistHitsPrimPerCm->Fill((Float_t)nprim);
-             fHistHitsElectronsPerCm->Fill(q);
+             FillHitsData(kPrimPerCm,(Float_t)nprim);
+             FillHitsData(kElectronsPerCm,q);
              
              dist  = 0;
              q     = 0;
              nprim = 0;
            }
+         } else { // reset for new track
+           
+           dist  = 0;
+           q     = 0;
+           nprim = 0;
          }
        }
-       
+
        radiusOld = radius;
        xold = x;
        yold = y;
        zold = z;
+       trackOld = tpcHit->GetTrack();
        
        tpcHit = (AliTPChit*) tpc->NextHit();
       }
     }
-    fHistHitsNhits->Fill(nHits);
+
+    FillHitsData(kNhits,nHits);
   }
+  //
+  IncEvCountCycleHits();
+  IncEvCountTotalHits();
+  //
 }
-
+