]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDQADataMakerRec.cxx
bug fix of bug fix
[u/mrichter/AliRoot.git] / FMD / AliFMDQADataMakerRec.cxx
index f95d040b44b51496af8879496285cd047fa67acc..20250d89c4f1a59e9339ee67dd4716e844e8b552 100644 (file)
@@ -31,6 +31,7 @@
 #include "AliFMDRawReader.h"
 #include "AliRawReader.h"
 #include "AliFMDAltroMapping.h"
+#include "AliFMDDebug.h"
 
 //_____________________________________________________________________
 // This is the class that collects the QA data for the FMD during
@@ -52,7 +53,6 @@ ClassImp(AliFMDQADataMakerRec)
 AliFMDQADataMakerRec::AliFMDQADataMakerRec() : 
   AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kFMD), 
                    "FMD Quality Assurance Data Maker"),
-  fDigitsArray("AliFMDDigit", 0),
   fRecPointsArray("AliFMDRecPoint", 1000)
 {
   // ctor
@@ -63,7 +63,6 @@ AliFMDQADataMakerRec::AliFMDQADataMakerRec() :
 AliFMDQADataMakerRec::AliFMDQADataMakerRec(const AliFMDQADataMakerRec& qadm) 
   : AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kFMD), 
                      "FMD Quality Assurance Data Maker"),
-    fDigitsArray(qadm.fDigitsArray),
     fRecPointsArray(qadm.fRecPointsArray)
 {
   // copy ctor 
@@ -74,7 +73,6 @@ AliFMDQADataMakerRec::AliFMDQADataMakerRec(const AliFMDQADataMakerRec& qadm)
 //_____________________________________________________________________
 AliFMDQADataMakerRec& AliFMDQADataMakerRec::operator = (const AliFMDQADataMakerRec& qadm ) 
 {
-  fDigitsArray = qadm.fDigitsArray;
   fRecPointsArray = qadm.fRecPointsArray;
   
   return *this;
@@ -115,6 +113,18 @@ void AliFMDQADataMakerRec::InitESDs()
     
 }
 
+//_____________________________________________________________________
+void AliFMDQADataMakerRec::InitDigits()
+{
+  // create Digits histograms in Digits subdir
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  
+  TH1I* hADCCounts = new TH1I("hADCCounts","Dist of ADC counts;ADC counts;Counts",1024,0,1024);
+  Add2DigitsList(hADCCounts, 0, !expert, image);
+}
+
+
 //_____________________________________________________________________ 
 void AliFMDQADataMakerRec::InitRecPoints()
 {
@@ -125,7 +135,7 @@ void AliFMDQADataMakerRec::InitRecPoints()
   TH1F* hEnergyOfRecpoints = new TH1F("hEnergyOfRecpoints",
                                      "Energy Distribution",100,0,3);
   hEnergyOfRecpoints->SetXTitle("Edep/Emip");
-  hEnergyOfRecpoints->SetYTitle("");
+  hEnergyOfRecpoints->SetYTitle("Counts");
   Add2RecPointsList(hEnergyOfRecpoints,0, !expert, image);
 }
 
@@ -143,7 +153,7 @@ void AliFMDQADataMakerRec::InitRaws()
     for(Int_t iring = firstring;iring<=1;iring++) {
       Char_t ring = (iring == 1 ? 'I' : 'O');
       hADCCounts      = new TH1I(Form("hADCCounts_FMD%d%c",
-                                     det, ring), "ADC counts",
+                                     det, ring), "ADC counts;Amplitude [ADC counts];Counts",
                                 1024,0,1023);
       
       Int_t index1 = GetHalfringIndex(det, ring, 0,1);
@@ -157,7 +167,7 @@ void AliFMDQADataMakerRec::InitRaws()
        
        
        hADCCounts      = new TH1I(Form("hADCCounts_FMD%d%c_board%d",
-                                       det, ring, board), "ADC counts",
+                                       det, ring, board), "ADC counts;Amplitude [ADC counts];Counts",
                                   1024,0,1023);
        hADCCounts->SetXTitle("ADC counts");
        hADCCounts->SetYTitle("");
@@ -169,6 +179,24 @@ void AliFMDQADataMakerRec::InitRaws()
   }
 }
 
+#if 0
+struct FillESDHist : public AliESDFMD::ForOne
+{
+  FillESDHist(AliFMDQADataMakerRec* m) : fM(m) {}
+  FillESDHist(const FillESDHist& o) : fM(o.fM) {}
+  FillESDHist& operator=(const FillESDHist& o) { fM = o.fM; return *this;  }
+  Bool_t operator()(UShort_t, Char_t, UShort_t, UShort_t, Float_t m, Float_t) 
+  {
+    // Float_t mult = fmd->Multiplicity(det,ring,sec,strip);
+    if(m == AliESDFMD::kInvalidMult) return true;
+    
+    fM->GetESDsData(0)->Fill(m);    
+    return true;
+  }
+  AliFMDQADataMakerRec* fM;
+};
+#endif
+
 //_____________________________________________________________________
 void AliFMDQADataMakerRec::MakeESDs(AliESDEvent * esd)
 {
@@ -176,11 +204,22 @@ void AliFMDQADataMakerRec::MakeESDs(AliESDEvent * esd)
     AliError("FMD ESD object not found!!") ; 
     return;
   }
+  AliFMDDebug(2, ("Will loop over ESD data and fill histogram"));
+
   AliESDFMD* fmd = esd->GetFMDData();
   if (!fmd) return;
-  
+
+#if 0
+  FillESDHist f(this);
+  fmd->ForEach(f);
+#else
+
+
+
+  // FIXME - we should use AliESDFMD::ForOne subclass to do this!
   for(UShort_t det=1;det<=3;det++) {
-    for (UShort_t ir = 0; ir < 2; ir++) {
+    UShort_t nrng = (det == 1 ? 1 : 2);
+    for (UShort_t ir = 0; ir < nrng; ir++) {
       Char_t   ring = (ir == 0 ? 'I' : 'O');
       UShort_t nsec = (ir == 0 ? 20  : 40);
       UShort_t nstr = (ir == 0 ? 512 : 256);
@@ -194,20 +233,22 @@ void AliFMDQADataMakerRec::MakeESDs(AliESDEvent * esd)
       }
     }
   }
+#endif
 }
 
-/*
+
 //_____________________________________________________________________
-void AliFMDQADataMakerRec::MakeDigits(TClonesArray * digits)
+void AliFMDQADataMakerRec::MakeDigits()
 {
   // makes data from Digits  
-  if(!digits)  {
+  if(!fDigitsArray)  {
     AliError("FMD Digit object not found!!") ;
     return;
   }
-  for(Int_t i=0;i<digits->GetEntriesFast();i++) {
+  
+  for(Int_t i=0;i<fDigitsArray->GetEntriesFast();i++) {
     //Raw ADC counts
-    AliFMDDigit* digit = static_cast<AliFMDDigit*>(digits->At(i));
+    AliFMDDigit* digit = static_cast<AliFMDDigit*>(fDigitsArray->At(i));
     GetDigitsData(0)->Fill(digit->Counts());
   }
 }
@@ -216,24 +257,33 @@ void AliFMDQADataMakerRec::MakeDigits(TClonesArray * digits)
 void AliFMDQADataMakerRec::MakeDigits(TTree * digitTree)
 {
   
-  fDigitsArray.Clear();
+  if (fDigitsArray) 
+    fDigitsArray->Clear();
+  else 
+    fDigitsArray = new TClonesArray("AliFMDDigit", 1000);
+
   TBranch*      branch = digitTree->GetBranch("FMD");
   if (!branch) {
     AliWarning("FMD branch in Digit Tree not found") ; 
     return;
   } 
-  TClonesArray* digitsAddress = &fDigitsArray;
-  branch->SetAddress(&digitsAddress);
+  branch->SetAddress(&fDigitsArray);
   branch->GetEntry(0); 
-  MakeDigits(digitsAddress);
+  MakeDigits();
 }
-*/
+
 //_____________________________________________________________________
 void AliFMDQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 {
  
-  AliFMDRawReader fmdReader(rawReader,0);
-  TClonesArray* digitsAddress = &fDigitsArray;
+ AliFMDRawReader fmdReader(rawReader,0);
+  
+  if (fDigitsArray) 
+    fDigitsArray->Clear();
+  else 
+    fDigitsArray = new TClonesArray("AliFMDDigit", 1000);
+
+  TClonesArray* digitsAddress = fDigitsArray;
   
   rawReader->Reset();
                
@@ -261,7 +311,8 @@ void AliFMDQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 void AliFMDQADataMakerRec::MakeRecPoints(TTree* clustersTree)
 {
   // makes data from RecPoints
-  AliFMDParameters* pars = AliFMDParameters::Instance();
+  
+   AliFMDParameters* pars = AliFMDParameters::Instance();
   fRecPointsArray.Clear();
   TBranch *fmdbranch = clustersTree->GetBranch("FMD");
   if (!fmdbranch) {