]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PMD/AliPMDCalibrator.cxx
Removing shadowed variables
[u/mrichter/AliRoot.git] / PMD / AliPMDCalibrator.cxx
index 1d3857cdc653bbd4c00e8fc9bf7bfa9ef38c4301..71609a8fcb0f3db754883c903c78a4143dadcae9 100644 (file)
 #include "TROOT.h"
 #include "TClonesArray.h"
 #include "TH1F.h"
+#include "TObjArray.h"
 
 // --- Standard library ---
 
 // --- AliRoot header files ---
 #include "AliLog.h"
+#include "AliRawReaderFile.h"
 #include "AliPMDCalibrator.h"
 #include "AliRawReaderDate.h"
 #include "AliPMDRawStream.h"
-#include "AliRawReaderFile.h"
 #include "AliPMDCalibData.h"
+#include "AliPMDddldata.h"
 #include "AliCDBManager.h"
 #include "AliCDBId.h"
 #include "AliCDBMetaData.h"
+#include "AliDAQ.h"
 
 ClassImp(AliPMDCalibrator)
 
-const Int_t kDet =2;
-const Int_t kMaxSMN = 24;
-const Int_t kMaxRow =96;
-const Int_t kMaxCol =96;
+//const Int_t kDet    = 2;
+//const Int_t kMaxSMN = 24;
+//const Int_t kMaxRow = 48;
+//const Int_t kMaxCol = 96;
 
-AliPMDCalibrator::AliPMDCalibrator()
+AliPMDCalibrator::AliPMDCalibrator():
+  fCalibGain(new AliPMDCalibData())
 {
   // Standard Constructor
-
-  fCalibData = new AliPMDCalibData();
-  
-  for(Int_t d=0;d<2;d++)
+  for(Int_t idet = 0; idet < kDet; idet++)
     {
-      for(Int_t i=0;i<24;i++)
+      for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
        {
-         fHsmIso[d][i] = NULL ;
-         for(Int_t j=0;j<96;j++)
+         fHsmIso[idet][ismn] = NULL ;
+         for(Int_t jrow = 0; jrow < kMaxRow; jrow++)
            {
-             for(Int_t k=0;k<96;k++)
+             for(Int_t kcol = 0; kcol < kMaxCol; kcol++)
                {
-                 fGainFact[d][i][j][k] = 0.0;
-                 fHadcIso[d][i][j][k]  = NULL;
+                 fGainFact[idet][ismn][jrow][kcol] = 0.0;
+                 fHadcIso[idet][ismn][jrow][kcol]  = NULL;
                }
            }
        }
     }
 }
 // ------------------------------------------------------------------------ //
+AliPMDCalibrator::AliPMDCalibrator(const AliPMDCalibrator &pmdcalibrator):
+  fCalibGain(new AliPMDCalibData())
+{
+  for(Int_t idet = 0; idet < 2; idet++)
+    {
+      for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
+       {
+         fHsmIso[idet][ismn] = pmdcalibrator.fHsmIso[idet][ismn] ;
+         for(Int_t jrow = 0; jrow < kMaxRow; jrow++)
+           {
+             for(Int_t kcol = 0; kcol < kMaxCol; kcol++)
+               {
+                 fGainFact[idet][ismn][jrow][kcol] = pmdcalibrator.fGainFact[idet][ismn][jrow][kcol];
+                 fHadcIso[idet][ismn][jrow][kcol]  = pmdcalibrator.fHadcIso[idet][ismn][jrow][kcol];
+               }
+           }
+       }
+    }
 
+}
+// ------------------------------------------------------------------------ //
+AliPMDCalibrator &AliPMDCalibrator::operator=(const AliPMDCalibrator &pmdcalibrator)
+{
+  if(this != &pmdcalibrator)
+    {
+      for(Int_t idet = 0; idet < kDet; idet++)
+       {
+         for(Int_t ismn = 0; ismn < kMaxSMN; ismn++)
+           {
+             fHsmIso[idet][ismn] = pmdcalibrator.fHsmIso[idet][ismn] ;
+             for(Int_t jrow = 0; jrow < kMaxRow;jrow++)
+               {
+                 for(Int_t kcol = 0; kcol < kMaxCol; kcol++)
+                   {
+                     fGainFact[idet][ismn][jrow][kcol] =
+                       pmdcalibrator.fGainFact[idet][ismn][jrow][kcol];
+                     fHadcIso[idet][ismn][jrow][kcol]  =
+                       pmdcalibrator.fHadcIso[idet][ismn][jrow][kcol];
+                   }
+               }
+           }
+       }
+    }
+  return *this;
+}
+// ------------------------------------------------------------------------ //
 AliPMDCalibrator::~AliPMDCalibrator()
 {
   // dtor
   if(fHsmIso)  delete fHsmIso ;
   if(fHadcIso) delete fHadcIso ;
-  delete fCalibData;
+  delete fCalibGain;
 }
 // ------------------------------------------------------------------------ //
 
@@ -93,8 +139,8 @@ void AliPMDCalibrator::Init()
   char hnameiso[120];
   char htitle1[120];
 
-  for(Int_t d=0;d<2;d++) {
-    for(Int_t i1=0; i1<kMaxSMN;i1++) {
+  for(Int_t d = 0; d < kDet; d++) {
+    for(Int_t i1 = 0; i1 < kMaxSMN; i1++) {
       sprintf(hname,"det_%d_iso_sm_%2d",d,i1);
       sprintf(hname24,"det_%d_iso_sm_%2d",d,i1);
       fHsmIso[d][i1]= new TH1F(hname,hname24,100,0,1000);
@@ -121,6 +167,8 @@ void AliPMDCalibrator::CalculateIsoCell()
 {
   // Calculates the ADC of isolated cell
 
+  TObjArray pmdddlcont;
+  const Int_t kDDL           = AliDAQ::NumberOfDdls("PMD");
   const Int_t kMaxHit        = 60000;
   const Int_t kCellNeighbour = 6;
 
@@ -157,24 +205,36 @@ void AliPMDCalibrator::CalculateIsoCell()
   AliPMDRawStream stream(&reader);
   while(reader.NextEvent())
     {
-      // printf("In CalculateIsoCell before while(stream.Next()), ...\n");
+      // New PMD Reader is plugged in
       
-      while(stream.Next())
+      for (Int_t iddl = 0; iddl < kDDL; iddl++)
        {
-         Int_t idet = stream.GetDetector();
-         Int_t ismn = stream.GetSMN();
-         Int_t ichno = stream.GetChannel();
-         Int_t irow = stream.GetRow();
-         Int_t icol = stream.GetColumn();
-         Int_t isig = stream.GetSignal();
+         reader.Select("PMD", iddl, iddl);
+         stream.DdlData(iddl,&pmdddlcont);
          
-         if (isig>0)
+         Int_t ientries = pmdddlcont.GetEntries();
+         for (Int_t ient = 0; ient < ientries; ient++)
            {
-             d1[idet][ismn][irow][icol] = isig;
-             ch[idet][ismn][irow][icol] = ichno;
+             AliPMDddldata *pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
+             
+             Int_t idet = pmdddl->GetDetector();
+             Int_t ismn = pmdddl->GetSMN();
+             //Int_t mcm = pmdddl->GetMCM();
+             Int_t ichno = pmdddl->GetChannel();
+             Int_t irow = pmdddl->GetRow();
+             Int_t icol = pmdddl->GetColumn();
+             Int_t isig = pmdddl->GetSignal();
+             
+             if (isig>0)
+               {
+                 d1[idet][ismn][irow][icol] = isig;
+                 ch[idet][ismn][irow][icol] = ichno;
+               }
            }
+         pmdddlcont.Clear();
        }
-      
+
+
       maxhit = 0;
       
       for(Int_t idet=0; idet < kDet; idet++)
@@ -222,23 +282,24 @@ void AliPMDCalibrator::CalculateIsoCell()
            }
        } //event loop
     }
-  Double_t histMean[2][24];
-  Double_t isoMean[2][24][96][96];
-  for(Int_t d1=0;d1<2;d1++)
+  Double_t histMean[kDet][kMaxSMN];
+  Double_t isoMean[kDet][kMaxSMN][kMaxRow][kMaxCol];
+
+  for(Int_t d1 = 0; d1 < kDet; d1++)
     {
-      for(Int_t i1=0;i1<24;i1++)
+      for(Int_t i1 = 0; i1 < kMaxSMN; i1++)
        {
          histMean[d1][i1]= fHsmIso[d1][i1]->GetMean();
-         for(Int_t j1=0;j1<96;j1++)
+         for(Int_t j1 = 0; j1 < kMaxRow; j1++)
            {
-             for(Int_t k1=0;k1<96;k1++)
+             for(Int_t k1 = 0; k1 < kMaxCol; k1++)
                {
                  isoMean[d1][i1][j1][k1]=fHadcIso[d1][i1][j1][k1]->GetMean();
                  if(isoMean[d1][i1][j1][k1]>0.0 && histMean[d1][i1]>0.0)
                    {
                      fGainFact[d1][i1][j1][k1]=isoMean[d1][i1][k1][j1]/histMean[d1][i1];
-                     float_t gain=fGainFact[d1][i1][j1][k1];
-                     fCalibData->SetGainFact(d1,i1,j1,k1,gain);
+                     Float_t gain = fGainFact[d1][i1][j1][k1];
+                     fCalibGain->SetGainFact(d1,i1,j1,k1,gain);
                    }                              
                }
            }
@@ -250,7 +311,8 @@ void AliPMDCalibrator::CalculateIsoCell()
 Bool_t AliPMDCalibrator::Store()
 {
   AliCDBManager *man = AliCDBManager::Instance();
-  man->SetDefaultStorage("local://$ALICE_ROOT");
+  //man->SetDefaultStorage("local://$ALICE_ROOT");
+  if(!man->IsDefaultStorageSet()) return kFALSE;
   AliCDBId id("PMD/Calib/Data",0,0);
   AliCDBMetaData md;
   md.SetResponsible("Zubayer");
@@ -262,7 +324,7 @@ Bool_t AliPMDCalibrator::Store()
   //fCalibData->Print(0);
   //printf("\n\n\n fCalibData\n");
   
-  Bool_t result = man->Put(fCalibData,id,&md);
+  Bool_t result = man->Put(fCalibGain,id,&md);
 
   return result;
 }