]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALQADataMakerRec.cxx
one more coverity sprintf vs snprintf + tmp enable triggerConfig check also for pedes...
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALQADataMakerRec.cxx
index 6a39bc59f888e143e547a487af1e9c373a267161..eb58eedfcedd7319bc885f186705d39c43245ad0 100644 (file)
@@ -65,10 +65,13 @@ Also calculate the ratio of amplitude from LED Monitor system (current/Reference
 #include "AliCaloFitResults.h"
 #include "AliCaloRawAnalyzerFastFit.h"
 #include "AliCaloRawAnalyzerNN.h"
-#include "AliCaloRawAnalyzerLMS.h"
+//#include "AliCaloRawAnalyzerLMS.h"
+#include "AliCaloRawAnalyzerKStandard.h"
 #include "AliCaloRawAnalyzerPeakFinder.h"
 #include "AliCaloRawAnalyzerCrude.h"
 
+#include "AliCaloRawAnalyzerFactory.h"
+
 using namespace std;
 
 ClassImp(AliEMCALQADataMakerRec)
@@ -79,7 +82,7 @@ AliEMCALQADataMakerRec::AliEMCALQADataMakerRec(fitAlgorithm fitAlgo) :
   fFittingAlgorithm(0),
   fRawAnalyzer(0),
   fRawAnalyzerTRU(0),
-  fSuperModules(4), // FIXME!!! number of SuperModules; 4 for 2009; update default to 12 for later runs..
+  fSuperModules(10), // FIXME!!! number of SuperModules; 10 for 2011; update default for later runs 
   fFirstPedestalSample(0),
   fLastPedestalSample(3),
   fFirstPedestalSampleTRU(0),
@@ -105,7 +108,11 @@ AliEMCALQADataMakerRec::AliEMCALQADataMakerRec(fitAlgorithm fitAlgo) :
 {
   // ctor
   SetFittingAlgorithm(fitAlgo);
-  fRawAnalyzerTRU = new AliCaloRawAnalyzerLMS();
+  
+  //fRawAnalyzerTRU = new AliCaloRawAnalyzerLMS();
+  
+  fRawAnalyzerTRU =  ( AliCaloRawAnalyzerKStandard*)AliCaloRawAnalyzerFactory::CreateAnalyzer(kLMS);
+  
   fRawAnalyzerTRU->SetFixTau(kTRUE); 
   fRawAnalyzerTRU->SetTau(2.5); // default for TRU shaper
 //  for (Int_t sm = 0 ; sm < fSuperModules ; sm++){
@@ -146,7 +153,9 @@ AliEMCALQADataMakerRec::AliEMCALQADataMakerRec(const AliEMCALQADataMakerRec& qad
   SetName((const char*)qadm.GetName()) ; 
   SetTitle((const char*)qadm.GetTitle()); 
   SetFittingAlgorithm(qadm.GetFittingAlgorithm());
-  fRawAnalyzerTRU = new AliCaloRawAnalyzerLMS();
+  
+  //fRawAnalyzerTRU = new AliCaloRawAnalyzerLMS();
+  fRawAnalyzerTRU = (AliCaloRawAnalyzerKStandard*)AliCaloRawAnalyzerFactory::CreateAnalyzer(kLMS);
   fRawAnalyzerTRU->SetFixTau(kTRUE); 
   fRawAnalyzerTRU->SetTau(2.5); // default for TRU shaper
 //  for (Int_t sm = 0 ; sm < fSuperModules ; sm++){
@@ -305,8 +314,7 @@ void AliEMCALQADataMakerRec::InitRaws()
 
   Int_t nTowersPerSM = AliEMCALGeoParams::fgkEMCALRows * AliEMCALGeoParams::fgkEMCALCols; // number of towers in a SuperModule; 24x48
   Int_t nTot = fSuperModules * nTowersPerSM; // max number of towers in all SuperModules
-  
-  
+    
   //Defining histograms binning, each 2D histogram covers all SMs
   Int_t nSMSectors = fSuperModules / 2; // 2 SMs per sector
   Int_t nbinsZ = 2*AliEMCALGeoParams::fgkEMCALCols;
@@ -473,15 +481,14 @@ void AliEMCALQADataMakerRec::InitRaws()
 //  hL10->SetOption("E");
   Add2RawsList(hL10, kLEDMonRatio, !expert, image, !saveCorr) ;
 
-  TH1F * hL11 = new TH1F("hMaxMinusMinLEDMonRatioDist", "LEDMon amplitude, Ratio distribution", nTot, 0, 2);
+  TH1F * hL11 = new TH1F("hMaxMinusMinLEDMonRatioDist", "LEDMon amplitude, Ratio distribution", nTotLEDMon, 0, 2);
   hL11->SetMinimum(0.1) ;
-  hL11->SetMaximum(100.);
   gStyle->SetOptStat(0);
   hL11->UseCurrentStyle();
   hL11->SetDirectory(0);
   Add2RawsList(hL11, kLEDMonRatioDist, !expert, image, !saveCorr) ;
   
-  GetCalibRefFromOCDB() ;   
+  GetCalibRefFromOCDB();   
 }
 
 //____________________________________________________________________________
@@ -512,6 +519,11 @@ void AliEMCALQADataMakerRec::MakeESDs(AliESDEvent * esd)
 //____________________________________________________________________________
 void AliEMCALQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 {
+ // Check that all the reference histograms exist before we try to use them - otherwise call InitRaws
+  if (!fCalibRefHistoPro || !fCalibRefHistoH2F || !fLEDMonRefHistoPro || !fHighEmcHistoH2F) {
+    InitRaws();
+  }
+
   // make sure EMCal was readout during the event
   Int_t emcID = AliDAQ::DetectorID("EMCAL"); // bit 18..
   const UInt_t *detPattern = rawReader->GetDetectorPattern(); 
@@ -727,54 +739,54 @@ void AliEMCALQADataMakerRec::MakeRaws(AliRawReader* rawReader)
   ConvertProfile2H(dynamic_cast<TProfile *>(GetRawsData(kSigHG)), fHighEmcHistoH2F) ;  
   Double_t binContent = 0. ;
   
-  //reset ratio histograms
-  GetRawsData(k2DRatioAmp)->Reset("ICE"); 
-  GetRawsData(kRatioDist)->Reset("ICE"); 
-  GetRawsData(kLEDMonRatio)->Reset("ICE");     
-  GetRawsData(kLEDMonRatioDist)->Reset("ICE");
-  GetRawsData(k2DRatioAmp)->ResetStats(); 
-  GetRawsData(kRatioDist)->ResetStats();
-  GetRawsData(kLEDMonRatio)->ResetStats();
-  GetRawsData(kLEDMonRatioDist)->ResetStats();
   
   //calculate the ratio of the amplitude and fill the histograms, only if the events type is Calib
- if (rawReader->GetType() == AliRawEventHeaderBase::kCalibrationEvent) { 
-      for(Int_t ix = 1; ix <= fHighEmcHistoH2F->GetNbinsX(); ix++) {
-       for(Int_t iy = 1; iy <= fHighEmcHistoH2F->GetNbinsY(); iy++) {
-         if(fCalibRefHistoH2F->GetBinContent(ix, iy))binContent = fHighEmcHistoH2F->GetBinContent(ix, iy)/fCalibRefHistoH2F->GetBinContent(ix, iy) ;
-         GetRawsData(k2DRatioAmp)->SetBinContent(ix, iy, binContent);
-         GetRawsData(kRatioDist)->Fill(GetRawsData(k2DRatioAmp)->GetBinContent(ix, iy));
-       }
-     } 
+ if (rawReader->GetType() == AliRawEventHeaderBase::kCalibrationEvent) {
+               //reset ratio histograms
+               GetRawsData(k2DRatioAmp)->Reset("ICE"); 
+               GetRawsData(kRatioDist)->Reset("ICE"); 
+               GetRawsData(kLEDMonRatio)->Reset("ICE");        
+               GetRawsData(kLEDMonRatioDist)->Reset("ICE");
+               GetRawsData(k2DRatioAmp)->ResetStats(); 
+               GetRawsData(kRatioDist)->ResetStats();
+               GetRawsData(kLEDMonRatio)->ResetStats();
+               GetRawsData(kLEDMonRatioDist)->ResetStats();
+
+    for(Int_t ix = 1; ix <= fHighEmcHistoH2F->GetNbinsX(); ix++) {
+     for(Int_t iy = 1; iy <= fHighEmcHistoH2F->GetNbinsY(); iy++) {
+       if(fCalibRefHistoH2F->GetBinContent(ix, iy))binContent = fHighEmcHistoH2F->GetBinContent(ix, iy)/fCalibRefHistoH2F->GetBinContent(ix, iy) ;
+        GetRawsData(k2DRatioAmp)->SetBinContent(ix, iy, binContent);
+        GetRawsData(kRatioDist)->Fill(GetRawsData(k2DRatioAmp)->GetBinContent(ix, iy));
+      }
+    } 
    
- }
-  //Now for LED monitor system, to calculate the ratio as well
-  Double_t binError = 0. ;
-  // for the binError, we add the relative errors, squared
-  Double_t relativeErrorSqr = 0. ;
+               //Now for LED monitor system, to calculate the ratio as well
+               Double_t binError = 0. ;
+               // for the binError, we add the relative errors, squared
+               Double_t relativeErrorSqr = 0. ;
   
-  for(int ib = 1; ib <= fLEDMonRefHistoPro->GetNbinsX(); ib++) {
+               for(int ib = 1; ib <= fLEDMonRefHistoPro->GetNbinsX(); ib++) {
     
-    if(fLEDMonRefHistoPro->GetBinContent(ib) != 0) {
-      binContent = GetRawsData(kSigLGLEDMon)->GetBinContent(ib) / fLEDMonRefHistoPro->GetBinContent(ib);
-      relativeErrorSqr = TMath::Power(fLEDMonRefHistoPro->GetBinError(ib) / fLEDMonRefHistoPro->GetBinContent(ib), 2);
-    }
-    else {
-      binContent = 0;
-      relativeErrorSqr = 0;
-    }
-    GetRawsData(kLEDMonRatio)->SetBinContent(ib, binContent);
+                       if(fLEDMonRefHistoPro->GetBinContent(ib) != 0) {
+                               binContent = GetRawsData(kSigLGLEDMon)->GetBinContent(ib) / fLEDMonRefHistoPro->GetBinContent(ib);
+
+                               relativeErrorSqr = TMath::Power( (fLEDMonRefHistoPro->GetBinError(ib) / fLEDMonRefHistoPro->GetBinContent(ib)), 2);
+                               if(GetRawsData(kSigLGLEDMon)->GetBinContent(ib) != 0) {
+                       relativeErrorSqr += TMath::Power( (GetRawsData(kSigLGLEDMon)->GetBinError(ib)/GetRawsData(kSigLGLEDMon)->GetBinContent(ib)), 2);
+                               }
+                       }
+                       else {
+                               binContent = 0;
+                               relativeErrorSqr = 0;
+                       }
+                       GetRawsData(kLEDMonRatio)->SetBinContent(ib, binContent);
     
-    if(GetRawsData(kLEDMonRatio)->GetBinContent(ib) != 0) {
-      relativeErrorSqr += TMath::Power(GetRawsData(kSigLGLEDMon)->GetBinError(ib)/GetRawsData(kLEDMonRatio)->GetBinContent(ib), 2);
-    }
-
-    binError = sqrt(relativeErrorSqr) * binContent;
-    GetRawsData(kLEDMonRatio)->SetBinError(ib, binError);
-    GetRawsData(kLEDMonRatioDist)->Fill(GetRawsData(kLEDMonRatio)->GetBinContent(ib));
-    }
-  
+                       binError = sqrt(relativeErrorSqr) * binContent;
+                       GetRawsData(kLEDMonRatio)->SetBinError(ib, binError);
+                       GetRawsData(kLEDMonRatioDist)->Fill(GetRawsData(kLEDMonRatio)->GetBinContent(ib));
+               }
   
+       } 
   // let's also fill the SM and event counter histograms
   Int_t nTotalHG = 0;
   Int_t nTotalLG = 0;
@@ -827,7 +839,7 @@ void AliEMCALQADataMakerRec::MakeDigits(TTree * digitTree)
 {
   // makes data from Digit Tree
   if (fDigitsArray) 
-    fDigitsArray->Clear() ; 
+    fDigitsArray->Clear("C") ; 
   else
     fDigitsArray = new TClonesArray("AliEMCALDigit", 1000) ; 
   
@@ -880,7 +892,12 @@ void AliEMCALQADataMakerRec::SetFittingAlgorithm(Int_t fitAlgo)
 {
   //Set fitting algorithm and initialize it if this same algorithm was not set before.
   //printf("**** Set Algorithm , number %d ****\n",fitAlgo);
+
   
+  fRawAnalyzer =  AliCaloRawAnalyzerFactory::CreateAnalyzer(fitAlgo);
+  fFittingAlgorithm = fitAlgo; 
+
+  /*
   if(fitAlgo == fFittingAlgorithm && fRawAnalyzer) {
     //Do nothing, this same algorithm already set before.
     //printf("**** Algorithm already set before, number %d, %s ****\n",fitAlgo, fRawAnalyzer->GetName());
@@ -914,14 +931,16 @@ void AliEMCALQADataMakerRec::SetFittingAlgorithm(Int_t fitAlgo)
 
   }
   return;
+  */
 }
 
 //_____________________________________________________________________________________
 void AliEMCALQADataMakerRec::ConvertProfile2H(TProfile * p, TH2 * histo) 
 {  
-  // set some histogram defaults
-  //histo->Reset() ; 
-  //histo->SetStats(kFALSE); // no statistics box shown
+  // reset histogram
+  histo->Reset("ICE") ; 
+  histo->ResetStats(); 
+
   Int_t nbinsProf = p->GetNbinsX();
   
   // loop through the TProfile p and fill the TH2F histo