]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - OADB/AliOADBPWG2Spectra.cxx
coverity bug fix
[u/mrichter/AliRoot.git] / OADB / AliOADBPWG2Spectra.cxx
index 6cd7ae3aab3e71a824fd6e8c8e0a1b76715277cd..ce925aedd83260a1e141f0aa297a26a150c931fd 100644 (file)
 
 ClassImp(AliOADBPWG2Spectra)
 
-const char * AliOADBPWG2Spectra::fDetectorNames[] = {"ITS", "ITSTPC", "TPC", "TOF", "TOFTPC", "Dummy", "Dummy"};
-const char * AliOADBPWG2Spectra::fPidTypeNames[]  = {"GaussFit", "NSigma", "Bayes", "Kinks"};
-const char * AliOADBPWG2Spectra::fChargeTags[]    = {"Pos", "Neg"};
-const char * AliOADBPWG2Spectra::fParticleNames[] = {"Pion", "Kaon", "Proton"};
+const char * AliOADBPWG2Spectra::fgkDetectorNames[] = {"ITS", "ITSTPC", "TPC", "TOF", "TOFTPC", "Dummy", "Dummy"};
+const char * AliOADBPWG2Spectra::fgkPidTypeNames[]  = {"GaussFit", "NSigma", "Bayes", "Kinks"};
+const char * AliOADBPWG2Spectra::fgkChargeTags[]    = {"Pos", "Neg"};
+const char * AliOADBPWG2Spectra::fgkParticleNames[] = {"Pion", "Kaon", "Proton"};
 
 
 AliOADBPWG2Spectra::AliOADBPWG2Spectra():
@@ -24,7 +24,7 @@ TNamed("Dummy", "OADB Object for PWG2 Spectra" ), fHistos(0)
 
 
 }
-AliOADBPWG2Spectra::AliOADBPWG2Spectra(char* name) :
+AliOADBPWG2Spectra::AliOADBPWG2Spectra(const char* name) :
 TNamed(name, "OADB Object for PWG2 Spectra" ), fHistos(0) 
 
 {
@@ -52,8 +52,8 @@ const char * AliOADBPWG2Spectra::GetOADBPWG2SpectraFileName()  {
   return filename.Data();
 
 }
-const char * AliOADBPWG2Spectra::GetHistoName(EPWG2SpectraDetector det, EPWG2SpectraPIDType pidType, EPWG2SpectraParticle part, 
-                                                    EPWG2SpectraCharge charge, const char * centrTag, Int_t centrBin) {
+const char * AliOADBPWG2Spectra::GetHistoName(Int_t det, Int_t pidType, Int_t part, 
+                                                    Int_t charge, const char * centrTag, Int_t centrBin) {
 
   // Returns histogram name
   // h[Name]_[Detector(s)]_[PIDType]_[Particle]_[Pos|Neg]_[MultiplicityOrCentralityIndex]
@@ -61,16 +61,23 @@ const char * AliOADBPWG2Spectra::GetHistoName(EPWG2SpectraDetector det, EPWG2Spe
 
   
   static TString histoName;
-  if (centrTag)
-    histoName.Form("h%s_%s_%s_%s_%s_%s_%d", GetName(), fDetectorNames[det], fPidTypeNames[pidType], fParticleNames[part], fChargeTags[charge], centrTag, centrBin);
+  if (centrTag) {
+    if(!strcmp(centrTag,"MB")){
+      // don't put a index for MB spectra
+      histoName.Form("h%s_%s_%s_%s_%s_%s", GetName(), fgkDetectorNames[det], fgkPidTypeNames[pidType], fgkParticleNames[part], fgkChargeTags[charge], centrTag);
+    }
+    else {
+      histoName.Form("h%s_%s_%s_%s_%s_%s_%d", GetName(), fgkDetectorNames[det], fgkPidTypeNames[pidType], fgkParticleNames[part], fgkChargeTags[charge], centrTag, centrBin);
+    }
+  }
   else 
-    histoName.Form("h%s_%s_%s_%s_%s",       GetName(), fDetectorNames[det], fPidTypeNames[pidType], fParticleNames[part], fChargeTags[charge]);
+    histoName.Form("h%s_%s_%s_%s_%s",       GetName(), fgkDetectorNames[det], fgkPidTypeNames[pidType], fgkParticleNames[part], fgkChargeTags[charge]);
 
   return histoName.Data();
 }
 
-TH1D * AliOADBPWG2Spectra::GetHisto(EPWG2SpectraDetector det, EPWG2SpectraPIDType pidType, EPWG2SpectraParticle part, 
-                                   EPWG2SpectraCharge charge, const char * centrTag, Int_t centrBin){
+TH1D * AliOADBPWG2Spectra::GetHisto(Int_t det, Int_t pidType, Int_t part, 
+                                   Int_t charge, const char * centrTag, Int_t centrBin){
 
   // Get an histogram from the list
   const char * name = GetHistoName(det,pidType,part,charge,centrTag,centrBin);
@@ -79,8 +86,8 @@ TH1D * AliOADBPWG2Spectra::GetHisto(EPWG2SpectraDetector det, EPWG2SpectraPIDTyp
 
 }
 
-void  AliOADBPWG2Spectra::AddHisto(TH1D * h, EPWG2SpectraDetector det, EPWG2SpectraPIDType pidType, EPWG2SpectraParticle part, 
-                                   EPWG2SpectraCharge charge, const char * centrTag, Int_t centrBin) {
+void  AliOADBPWG2Spectra::AddHisto(TH1D * h, Int_t det, Int_t pidType, Int_t part, 
+                                   Int_t charge, const char * centrTag, Int_t centrBin) {
   // Add a histogram to the list
   // Rename and rebinn it if necessary
   
@@ -89,18 +96,23 @@ void  AliOADBPWG2Spectra::AddHisto(TH1D * h, EPWG2SpectraDetector det, EPWG2Spec
     return;
   }
   
-  const char * name = GetHistoName(det,pidType,part,charge,centrTag,centrBin);
   static TH1D * htest = BookHisto(kDetDummy, kGaussFit,kPion, kPos);
+  const char * name = GetHistoName(det,pidType,part,charge,centrTag,centrBin);
   if(!CompareBinning(h,htest)){
     AliWarning("Histo have different binning! Rebinning to standard"){
       h = GetHistoStandardBinning(h,det,pidType,part,charge,centrTag,centrBin);
     }
   }
+  if(!fHistos) {
+    AliError("fHistos not allocated!!");
+    return;
+  }
+    
   TH1D * hold = (TH1D*) fHistos->FindObject(name);
   if (hold) fHistos->Remove(hold);
   delete hold;
   if(strcmp(h->GetName(),name)){
-    AliError(Form("Histogram namws are not consinstent %s-%s, resetting", h->GetName(),name));
+    AliWarning(Form("Histogram names are not consinstent %s-%s, resetting", h->GetName(),name));
     h->SetName(name); 
   }
   fHistos->Add(h);
@@ -108,15 +120,15 @@ void  AliOADBPWG2Spectra::AddHisto(TH1D * h, EPWG2SpectraDetector det, EPWG2Spec
 
 }
 
-TH1D * AliOADBPWG2Spectra::BookHisto(EPWG2SpectraDetector det, EPWG2SpectraPIDType pidType, EPWG2SpectraParticle part, 
-                                    EPWG2SpectraCharge charge, const char * centrTag, Int_t centrBin) {
+TH1D * AliOADBPWG2Spectra::BookHisto(Int_t det, Int_t pidType, Int_t part, 
+                                    Int_t charge, const char * centrTag, Int_t centrBin) {
 
   // book a histogram according to the template. All the histograms
   // should have the same binning (if possible/reasonable) to
   // facilitate the compoarison and the combination
 
-  const Float_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,2,2.2,2.4,2.6, 2.7, 2.8, 2.9, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0};
-  Int_t nbinsTempl=48;
+  const Float_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0};
+  Int_t nbinsTempl=52;
   const char * name = GetHistoName(det,pidType,part,charge,centrTag,centrBin);
   TH1D * h = new TH1D(name, name, nbinsTempl, templBins);
   return h;
@@ -137,8 +149,8 @@ void AliOADBPWG2Spectra::Browse(TBrowser *b)
       TObject::Browse(b);
 }
 
-TH1D * AliOADBPWG2Spectra::GetHistoStandardBinning(const TH1D* h, EPWG2SpectraDetector det, EPWG2SpectraPIDType pidType, EPWG2SpectraParticle part, 
-                                                  EPWG2SpectraCharge charge, const char * centrTag, Int_t centrBin) {
+TH1D * AliOADBPWG2Spectra::GetHistoStandardBinning(const TH1D* h, Int_t det, Int_t pidType, Int_t part, 
+                                                  Int_t charge, const char * centrTag, Int_t centrBin) {
   // Returns a histo with the standard binning and the same content of h
   // if the bins of h are not a subset of the standard binning, it crashes with a fatal error
   // under and overflows are ignored
@@ -156,12 +168,13 @@ TH1D * AliOADBPWG2Spectra::GetHistoStandardBinning(const TH1D* h, EPWG2SpectraDe
       Float_t lowPtH2=h->GetBinLowEdge(jBin);
       Float_t binWidH2=h->GetBinWidth(jBin);
       if(TMath::Abs(lowPtH1-lowPtH2)<0.001 && TMath::Abs(binWidH2-binWidH1)<0.001){
-       hStd->SetBinContent(jBin, h->GetBinContent(iBin));
-       hStd->SetBinError  (jBin, h->GetBinError  (iBin));
+       hStd->SetBinContent(iBin, h->GetBinContent(jBin));
+       hStd->SetBinError  (iBin, h->GetBinError  (jBin));
        break;
       }
       if(TMath::Abs(lowPtH1-lowPtH2)<0.001){
-       AliFatal(Form("Found partially overlapping bins! [(%f,%f)(%f,%f)]",lowPtH1,binWidH1,lowPtH2,binWidH2));
+       AliError(Form("Found partially overlapping bins! [(%f,%f)(%f,%f)]",lowPtH1,binWidH1,lowPtH2,binWidH2));
+       continue;
       }
     }
   }
@@ -177,8 +190,8 @@ Bool_t AliOADBPWG2Spectra::CompareBinning(TH1 * h1, TH1 * h2) {
   if(nbins1 != nbins2) return kFALSE;
   
   for(Int_t ibin = 1; ibin <= nbins1; ibin++){
-    if(TMath::Abs(h1->GetBinLowEdge(ibin) - h2->GetBinLowEdge(ibin))<0.001) return kFALSE;
-    if(TMath::Abs(h1->GetBinWidth(ibin) - h2->GetBinWidth(ibin))<0.001) return kFALSE;
+    if(TMath::Abs(h1->GetBinLowEdge(ibin) - h2->GetBinLowEdge(ibin))>0.001) return kFALSE;
+    if(TMath::Abs(h1->GetBinWidth(ibin) - h2->GetBinWidth(ibin))>0.001) return kFALSE;
   }
   
   return kTRUE;