]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDQADataMakerRec.cxx
Adding the new AliRawReaderChain to the Create() mactory method. The URI syntax is...
[u/mrichter/AliRoot.git] / FMD / AliFMDQADataMakerRec.cxx
index a01a29e4748d2037539cce7f7552f8ad05d0559a..64d379c707ffb4e7d8ec53dedfb7f89c55ca3a28 100644 (file)
 #include "AliQAChecker.h"
 #include "AliESDFMD.h"
 #include "AliFMDParameters.h"
+#include "AliFMDRawReader.h"
+#include "AliRawReader.h"
 
 //_____________________________________________________________________
 // This is the class that collects the QA data for the FMD during
 // reconstruction.  
 //
 // The following data types are picked up:
-// - digits
 // - rec points
 // - esd data
-// The following data types are not supported (yet):
 // - raws
 // Author : Hans Hjersing Dalsgaard, hans.dalsgaard@cern.ch
 //_____________________________________________________________________
@@ -50,31 +50,53 @@ ClassImp(AliFMDQADataMakerRec)
 //_____________________________________________________________________
 AliFMDQADataMakerRec::AliFMDQADataMakerRec() : 
   AliQADataMakerRec(AliQA::GetDetName(AliQA::kFMD), 
-                   "FMD Quality Assurance Data Maker")
+                   "FMD Quality Assurance Data Maker"),
+  fDigitsArray("AliFMDDigit", 0),
+  fRecPointsArray("AliFMDRecPoint", 1000)
 {
   // ctor
 }
 
 //_____________________________________________________________________
-AliFMDQADataMakerRec::AliFMDQADataMakerRec(const AliFMDQADataMakerRec& qadm) :
-  AliQADataMakerRec()
+AliFMDQADataMakerRec::AliFMDQADataMakerRec(const AliFMDQADataMakerRec& qadm) 
+  : AliQADataMakerRec(AliQA::GetDetName(AliQA::kFMD), 
+                     "FMD Quality Assurance Data Maker"),
+    fDigitsArray(qadm.fDigitsArray),
+    fRecPointsArray(qadm.fRecPointsArray)
 {
-  //copy ctor 
+  // copy ctor 
   // Parameters: 
   //    qadm    Object to copy from
   
 }
+//_____________________________________________________________________
+AliFMDQADataMakerRec& AliFMDQADataMakerRec::operator = (const AliFMDQADataMakerRec& qadm ) 
+{
+  fDigitsArray = qadm.fDigitsArray;
+  fRecPointsArray = qadm.fRecPointsArray;
+  
+  return *this;
+}
+//_____________________________________________________________________
+AliFMDQADataMakerRec::~AliFMDQADataMakerRec()
+{
+}
 
 
 //_____________________________________________________________________ 
 
 void 
-AliFMDQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX task, 
+AliFMDQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX_t task, 
                                         TObjArray * list)
 {
   // Detector specific actions at end of cycle
   // do the QA checking
-  AliLog::Message(5,"FMD: end of detector cycle","AliFMDQADataMakerRec","AliFMDQADataMakerRec","AliFMDQADataMakerRec::EndOfDetectorCycle","AliFMDQADataMakerRec.cxx",95);
+  AliLog::Message(5,"FMD: end of detector cycle",
+                 "AliFMDQADataMakerRec","AliFMDQADataMakerRec",
+                 "AliFMDQADataMakerRec::EndOfDetectorCycle",
+                 "AliFMDQADataMakerRec.cxx",95);
   AliQAChecker::Instance()->Run(AliQA::kFMD, task, list);
 }
 
@@ -90,22 +112,17 @@ void AliFMDQADataMakerRec::InitESDs()
 }
 
 //_____________________________________________________________________ 
-void AliFMDQADataMakerRec::InitDigits()
+/*void AliFMDQADataMakerRec::InitDigits()
 {
   // create Digits histograms in Digits subdir
   TH1I* hADCCounts      = new TH1I("hADCCounts","Dist of ADC counts",
                                   1024,0,1024);
-  // TH1F* hEnergyOfDigits = new TH1F("hEnergyOfDigits", "Energy distribution",
-  // 100,0,3);
   hADCCounts->SetXTitle("ADC counts");
   hADCCounts->SetYTitle("");
-  // hEnergyOfDigits->SetXTitle("Edep/Emip");
-  // hEnergyOfDigits->SetYTitle("Counts");
   Add2DigitsList(hADCCounts, 0);
-  // Add2DigitsList(hEnergyOfDigits, 1);
   
 }
-
+*/
 //_____________________________________________________________________ 
 void AliFMDQADataMakerRec::InitRecPoints()
 {
@@ -119,7 +136,12 @@ void AliFMDQADataMakerRec::InitRecPoints()
 //_____________________________________________________________________ 
 void AliFMDQADataMakerRec::InitRaws()
 {
-  
+  TH1I* hADCCounts      = new TH1I("hADCCounts","Dist of ADC counts",
+                                  1024,0,1023);
+  hADCCounts->SetXTitle("ADC counts");
+  hADCCounts->SetYTitle("");
+  Add2RawsList(hADCCounts, 0);
+
 }
 
 //_____________________________________________________________________
@@ -149,15 +171,16 @@ void AliFMDQADataMakerRec::MakeESDs(AliESDEvent * esd)
   }
 }
 
+/*
 //_____________________________________________________________________
 void AliFMDQADataMakerRec::MakeDigits(TClonesArray * digits)
 {
   // makes data from Digits  
   if(!digits)  {
-      AliError("FMD Digit object not found!!") ;
-      return;
+    AliError("FMD Digit object not found!!") ;
+    return;
   }
-  for(Int_t i=0;i<digits->GetEntries();i++) {
+  for(Int_t i=0;i<digits->GetEntriesFast();i++) {
     //Raw ADC counts
     AliFMDDigit* digit = static_cast<AliFMDDigit*>(digits->At(i));
     GetDigitsData(0)->Fill(digit->Counts());
@@ -168,45 +191,59 @@ void AliFMDQADataMakerRec::MakeDigits(TClonesArray * digits)
 void AliFMDQADataMakerRec::MakeDigits(TTree * digitTree)
 {
   
-  TClonesArray* digits = new TClonesArray("AliFMDDigit", 1000) ; 
-  TBranch*      branch = digitTree->GetBranch("FMD") ;
-  if (!branch ) {
+  fDigitsArray.Clear();
+  TBranch*      branch = digitTree->GetBranch("FMD");
+  if (!branch) {
     AliWarning("FMD branch in Digit Tree not found") ; 
     return;
   } 
-  
-  branch->SetAddress(&digits;
-  branch->GetEntry(0) 
-  MakeDigits(digits) ; 
+  TClonesArray* digitsAddress = &fDigitsArray;
+  branch->SetAddress(&digitsAddress);
+  branch->GetEntry(0); 
+  MakeDigits(digitsAddress);
 }
-
+*/
 //_____________________________________________________________________
 void AliFMDQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 {
+  AliFMDRawReader fmdReader(rawReader,0);
+  TClonesArray* digitsAddress = &fDigitsArray;
   
+  rawReader->Reset();
+               
+       digitsAddress->Clear();
+       fmdReader.ReadAdcs(digitsAddress);
+       for(Int_t i=0;i<digitsAddress->GetEntriesFast();i++) {
+               //Raw ADC counts
+               AliFMDDigit* digit = static_cast<AliFMDDigit*>(digitsAddress->At(i));
+               GetRawsData(0)->Fill(digit->Counts());
+       }
 }
 
 //_____________________________________________________________________
 void AliFMDQADataMakerRec::MakeRecPoints(TTree* clustersTree)
 {
   // makes data from RecPoints
+  AliFMDParameters* pars = AliFMDParameters::Instance();
+  fRecPointsArray.Clear();
   TBranch *fmdbranch = clustersTree->GetBranch("FMD");
   if (!fmdbranch) { 
     AliError("can't get the branch with the FMD recpoints !");
     return;
   }
   
-  TClonesArray * fmdrecpoints = new TClonesArray("AliFMDRecPoint", 1000) ;
-  fmdbranch->SetAddress(&fmdrecpoints);
+  TClonesArray* RecPointsAddress = &fRecPointsArray;
+  
+  fmdbranch->SetAddress(&RecPointsAddress);
   fmdbranch->GetEntry(0);
-    
-  TIter next(fmdrecpoints) ; 
+  TIter next(RecPointsAddress) ; 
   AliFMDRecPoint * rp ; 
   while ((rp = static_cast<AliFMDRecPoint*>(next()))) {
-    GetRecPointsData(0)->Fill(rp->Particles()) ;
+    
+    GetRecPointsData(0)->Fill(rp->Edep()/pars->GetEdepMip()) ;
+  
   }
-  fmdrecpoints->Delete();
-  delete fmdrecpoints;
 
 }