]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSPreprocessorSSD.cxx
Better starting value for estimate of covariance matrix (Maksym, Silvia)
[u/mrichter/AliRoot.git] / ITS / AliITSPreprocessorSSD.cxx
index 591e4ff3d13a628ff85b55fb613b2282fb186afa..cf6c0ac82102befd31a41a5c31a8d65eb064daa6 100644 (file)
@@ -1,5 +1,5 @@
 #include "AliITSPreprocessorSSD.h"
-
 #include "AliCDBMetaData.h"
 #include "AliLog.h"
 #include "TFile.h"
@@ -8,9 +8,9 @@
 #include <TObjString.h>
 
 #include "AliITSRawStreamSSD.h"
-#include "AliITSNoiseSSD.h"
-#include "AliITSPedestalSSD.h"
-#include "AliITSBadChannelsSSD.h"
+#include "AliITSNoiseSSDv2.h"
+#include "AliITSPedestalSSDv2.h"
+#include "AliITSBadChannelsSSDv2.h"
 #include <Riostream.h>
 
 
@@ -26,7 +26,19 @@ const Int_t AliITSPreprocessorSSD::fgkNumberOfSSD = 1698;
 
 ClassImp(AliITSPreprocessorSSD)
 
-//______________________________________________________________________________________________
+//-----------------------------------------------------------------------
+AliITSPreprocessorSSD::AliITSPreprocessorSSD(AliShuttleInterface* shuttle) :
+  AliPreprocessor("SSD", shuttle)
+{
+  // constructor
+
+  AddRunType("ELECTRONICS_CALIBRATION_RUN");
+  AddRunType("PEDESTAL");
+  AddRunType("PHYSICS");
+
+}
+
+///______________________________________________________________________________________________
 void AliITSPreprocessorSSD::Initialize(Int_t run, UInt_t startTime,
        UInt_t endTime)
 {
@@ -46,16 +58,22 @@ UInt_t AliITSPreprocessorSSD::Process(TMap* /*dcsAliasMap*/)
   // Note. To be modified: dcsAliasMap is not needed but I can not get rid
   // of it unless the base class AliPreprocessor is modified accordingly.
 
-  TObjArray calib_array(fgkNumberOfSSD); 
-  TObjArray badch_array(fgkNumberOfSSD); 
-  TObjArray ped_array(fgkNumberOfSSD); 
+  //  TObjArray calib_array(fgkNumberOfSSD); 
+  //TObjArray badch_array(fgkNumberOfSSD); 
+  //TObjArray ped_array(fgkNumberOfSSD); 
   //Float_t noise=0, gain=0;
-
+  
+  //---------------------------------------
+  // initialize the calibration objects
+  AliITSNoiseSSDv2 *calib = new AliITSNoiseSSDv2();
+  AliITSBadChannelsSSDv2 *badch = new AliITSBadChannelsSSDv2();
+  AliITSPedestalSSDv2 *pedel = new AliITSPedestalSSDv2();
+  
   TString runType = GetRunType();
- if(runType == "ELECTRONICS_CALIBRATION_RUN") {
-
 if(runType == "ELECTRONICS_CALIBRATION_RUN") {
+    
   }
-  else if(runType == "PEDESTAL_RUN") {
+  else if(runType == "PEDESTAL") {
 
     TList* list = GetFileSources(kDAQ, "CALIBRATION");
     if (list && list->GetEntries() > 0)
@@ -84,43 +102,47 @@ UInt_t AliITSPreprocessorSSD::Process(TMap* /*dcsAliasMap*/)
                return 2;
            }
            
-           TObjArray *cal; 
-           f->GetObject("Noise;1", cal); 
+           AliITSNoiseSSDv2 *cal; 
+           f->GetObject("AliITSNoiseSSDv2;1", cal); 
            if(!cal) {
                Log("File does not contain expected data for the noise!");
                delete list;
+               return 3;
+           }       
+           AliITSPedestalSSDv2 *ped;
+           f->GetObject("AliITSPedestalSSDv2;1", ped); 
+           if(!ped) {
+               Log("File does not contain expected data for the pedestals!");
+               delete list;
+               return 5;
            }       
-           Int_t nmod = cal->GetEntries();
-           for(Int_t mod=0; mod<nmod; mod++) {
-             AliITSNoiseSSD *calib = (AliITSNoiseSSD*) cal->At(mod);
-             if((calib->GetMod()<500)||(calib->GetMod()>2198)) continue;
-             calib_array.AddAt(calib,calib->GetMod()-500);
-           }
-
-           TObjArray *bad; 
-           f->GetObject("BadChannels;1", bad); 
+           AliITSBadChannelsSSDv2 *bad;
+           f->GetObject("AliITSBadChannelsSSDv2;1", bad); 
            if(!bad) {
                Log("File does not contain expected data for bad channels  !");
                delete list;
+               return 4;
            }       
-           nmod = bad->GetEntries();
-           for(Int_t mod=0; mod<nmod; mod++) {
-             AliITSBadChannelsSSD *badch = (AliITSBadChannelsSSD*) bad->At(mod);
-             if((badch->GetMod()<500)||(badch->GetMod()>2198)) continue;
-             badch_array.AddAt(badch,badch->GetMod()-500);
-           }
 
-           TObjArray *ped; 
-           f->GetObject("Pedestal;1", ped); 
-           if(!ped) {
-               Log("File does not contain expected data for the pedestals!");
-               delete list;
-           }       
-           nmod = ped->GetEntries();
-           for(Int_t mod=0; mod<nmod; mod++) {
-             AliITSPedestalSSD *pedel = (AliITSPedestalSSD*) ped->At(mod);
-             if((pedel->GetMod()<500)||(pedel->GetMod()>2198)) continue;
-             ped_array.AddAt(pedel,pedel->GetMod()-500);
+           for(Int_t module=0; module<fgkNumberOfSSD; module++) {
+             for(Int_t strip=0; strip<768; strip++) {
+               if(cal->GetNoiseP(module,strip)) 
+                 calib->AddNoiseP(module,strip,cal->GetNoiseP(module,strip));
+               if(cal->GetNoiseN(module,strip)) 
+                 calib->AddNoiseN(module,strip,cal->GetNoiseN(module,strip));
+               if(ped->GetPedestalP(module,strip)) 
+                 pedel->AddPedestalP(module,strip,
+                                     ped->GetPedestalP(module,strip));
+               if(ped->GetPedestalN(module,strip)) 
+                 pedel->AddPedestalN(module,strip,
+                                     ped->GetPedestalN(module,strip));
+               if(bad->GetBadChannelP(module,strip)) 
+                 badch->AddBadChannelP(module,strip,
+                                        bad->GetBadChannelP(module,strip));
+               if(bad->GetBadChannelN(module,strip)) 
+                 badch->AddBadChannelN(module,strip,
+                                        bad->GetBadChannelN(module,strip));
+             }
            }
 
            f->Close(); delete f;           
@@ -128,7 +150,7 @@ UInt_t AliITSPreprocessorSSD::Process(TMap* /*dcsAliasMap*/)
          } else {
                Log("GetFile error!");
                delete list;
-               return 3;
+               return 6;
          } // if filename
        } // end iteration over LDCs
        
@@ -136,31 +158,31 @@ UInt_t AliITSPreprocessorSSD::Process(TMap* /*dcsAliasMap*/)
       } else {
          Log("GetFileSources error!");
          if(list) delete list;
-         return 4;
+         return 7;
       } // if list
     
-      //Now we have to store the final CDB file
-      AliCDBMetaData metaData;
-      metaData.SetBeamPeriod(0);
-      metaData.SetResponsible("Enrico Fragiacomo");
-      metaData.SetComment("Fills noise, pedestal and bad channels TObjArray");
-  
-      if(!Store("Calib", "NoiseSSD", &calib_array, &metaData, 0, 1)) {
+    //Now we have to store the final CDB file
+    AliCDBMetaData metaData;
+    metaData.SetBeamPeriod(0);
+    metaData.SetResponsible("Enrico Fragiacomo");
+    metaData.SetComment("Fills noise, pedestal and bad channels TObjArray");
+    
+      if(!Store("Calib", "NoiseSSD", (TObject *)calib, &metaData, 0, 1)) {
        Log("no store");
         return 1;
       }  
       
-      if(!Store("Calib", "BadChannelsSSD", &badch_array, &metaData, 0, 1)) {
+      if(!Store("Calib", "BadChannelsSSD", (TObject*)badch, &metaData, 0, 1)) {
        Log("no store");
         return 1;
       }  
       
-      if(!StoreReferenceData("Calib","PedestalSSD", &ped_array, &metaData)) {
+      if(!StoreReferenceData("Ref","PedestalSSD",  (TObject*)pedel, &metaData)) {
        Log("no store");
        return 1;
       }
         
-  } // end if noise_run
+  } // end if pedestal run
   else {
     Log("Nothing to do");
     return 0;