]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/ITSSPDSCANda.cxx
store also difference in local Y
[u/mrichter/AliRoot.git] / ITS / ITSSPDSCANda.cxx
index 065b9445a28d9ef392b07788c4a94304019609e4..97f9e8a514d20bf2ab12c4cfbcea199037adb2de 100644 (file)
@@ -1,12 +1,12 @@
 /*
-- Contact: - henrik.tydesjo@cern.ch
-- Link: - http://tydes.home.cern.ch/tydes/doc/CalibrationOverview/CalibrationAlgorithms/
-- Run Type: - DAQ_MIN_TH_SCAN,DAQ_MEAN_TH_SCAN,DAQ_UNIFORMITY_SCAN,DAQ_NOISY_PIX_SCAN,DAQ_PIX_DELAY_SCAN,DAQ_FO_UNIF_SCAN
-- DA Type: - LDC
-- Number of events needed:
-- Input Files: - daq db config files: spd_standal_params,spd_perm_noisy ,  previous noisy lists: ./calibResults/ScanNoisy/* ,  raw data
-- Output Files: - Ref Data: ./calibResults/ScanReference/* ,  DCS update: ./calibResults/ScanDCSconfigToFXS/* ,  OCDB update: ./calibResults/ScanNoisyToFXS/* ,  persistent files: ./calibResults/ScanNoisy/*
-- Trigger types used: 
+Contact: henrik.tydesjo@cern.ch
+Link: tydes.home.cern.ch/tydes/doc/CalibrationOverview/CalibrationAlgorithms/
+Run Type: DAQ_MIN_TH_SCAN,DAQ_MEAN_TH_SCAN,DAQ_UNIFORMITY_SCAN,DAQ_NOISY_PIX_SCAN,DAQ_PIX_DELAY_SCAN
+DA Type: LDC
+Number of events needed: Depending on scan type
+Input Files: spd_standal_params,spd_perm_noisy ,  ./calibResults/ScanNoisy/* ,  raw data
+Output Files: ./calibResults/ScanReference/* ,  ./calibResults/ScanDCSconfigToFXS/* ,  ./calibResults/ScanNoisyToFXS/* ,  ./calibResults/ScanNoisy/*
+Trigger types used: PHYSICS
 */
 
 ////////////////////////////////////////////////////////////////////////////////
 //                                                                            //
 ////////////////////////////////////////////////////////////////////////////////
 
+#ifndef SPD_DA_OFF
 extern "C" {
 #include "daqDA.h"
 }
+#endif
 #include "event.h"
 #include "monitor.h"
 #include "AliRawReaderDate.h"
@@ -41,7 +43,10 @@ extern "C" {
 #include <TROOT.h>
 #include <TPluginManager.h>
 #include <TObjArray.h>
+#include <TObjString.h>
 #include <TString.h>
+#include <TFitter.h>
+#include <cstdlib>
 
 int main(int argc, char **argv) {
   if (argc<2) {
@@ -69,6 +74,9 @@ int main(int argc, char **argv) {
   TString paramsFileName = Form("%s/standal_params.txt",configFilesDir);
   TString permNoisyFileName = Form("%s/perm_noisy.txt",configFilesDir);
 
+  TFitter *fitter = new TFitter(3);
+  TVirtualFitter::SetFitter(fitter);
+
   // This line is needed in case of a stand-alone application w/o
   // $ROOTSYS/etc/system.rootrc file
   gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo",
@@ -78,8 +86,9 @@ int main(int argc, char **argv) {
                                        "TStreamerInfo()");
 
   // turn off annoying warning messages
-  new AliLog;
-  AliLog::Instance()->SetGlobalDebugLevel(-20);
+  // NB: Should not be handled here
+  AliLog* logger = AliLog::GetRootLogger();
+  logger->SetGlobalDebugLevel(-20);
 
   // calib scan types
   enum calib_types{MINTH,MEANTH,DAC,UNIMA,NOISE,DELAY};
@@ -97,6 +106,8 @@ int main(int argc, char **argv) {
   status=daqDA_DB_getFile(idp.Data(),paramsFileName.Data());
   if (status) {
     printf("Failed to get config file %s: status=%d. Using default tuning parameters.\n",idp.Data(),status);
+    TString rmCmd = Form("rm -f %s",paramsFileName.Data());
+    system(rmCmd.Data());
   }
 #endif
   if (status==0) {
@@ -112,10 +123,8 @@ int main(int argc, char **argv) {
        paramsFile >> paramN;
        if (paramsFile.eof()) break;
        paramsFile >> paramV;
-       TString* paramNS = new TString(paramN);
-       TString* paramVS = new TString(paramV);
-       paramNames.AddAtAndExpand((TObject*)paramNS,nrTuningParams);
-       paramVals.AddAtAndExpand((TObject*)paramVS,nrTuningParams);
+       paramNames.AddAtAndExpand(new TObjString(paramN),nrTuningParams);
+       paramVals.AddAtAndExpand(new TObjString(paramV),nrTuningParams);
        nrTuningParams++;
        if (paramsFile.eof()) break;
       }
@@ -123,7 +132,8 @@ int main(int argc, char **argv) {
     }
   }
   //  for (UInt_t i=0; i<nrTuningParams; i++) {
-  //    printf("Entry %d: N=%s , V=%s\n",i,((TString*)paramNames.At(i))->Data(),((TString*)paramVals.At(i))->Data());
+  //  //    printf("Entry %d: N=%s , V=%s\n",i,((TString*)paramNames.At(i))->Data(),((TString*)paramVals.At(i))->Data());
+  //    printf("Entry %d: N=%s , V=%s\n",i,((TObjString*)paramNames.At(i))->GetString().Data(),((TObjString*)paramVals.At(i))->GetString().Data());
   //  }
 
   // perm noisy list:
@@ -133,6 +143,8 @@ int main(int argc, char **argv) {
   permstatus=daqDA_DB_getFile(idn.Data(),permNoisyFileName.Data());
   if (permstatus) {
     printf("Failed to get config file %s: status=%d. No permanently noisy pixels will be added.\n",idn.Data(),permstatus);
+    TString rmCmd = Form("rm -f %s",permNoisyFileName.Data());
+    system(rmCmd.Data());
   }
 #endif
 
@@ -143,6 +155,10 @@ int main(int argc, char **argv) {
   int startSeg = 1;
 
 #ifndef SPD_DA_OFF
+  if (getenv("DATE_RUN_NUMBER")==0) {
+    printf("DATE_RUN_NUMBER not properly set.\n");
+    return -1;
+  }
   int runNr = atoi(getenv("DATE_RUN_NUMBER"));
 #else
   int runNr = atoi(argv[1]);
@@ -252,7 +268,7 @@ int main(int argc, char **argv) {
            }
          }
          
-         if (str->ReadCalibHeader()) {
+         if (str->ReadCalibHeader()>0) {
            // first check the type:
            if (bScanInit[eqId] && type[eqId]!=str->GetHtype()) {
              printf("Calib header problem. Type changed (%d -> %d)!\n",type[eqId],str->GetHtype());
@@ -270,14 +286,16 @@ int main(int argc, char **argv) {
            rowStart[eqId]    = str->GetHrowStart();
            rowEnd[eqId]      = str->GetHrowEnd();
            rowValue[eqId]    = str->GetHrowValue();
-           dacValue[eqId]    = str->GetHdacValue();
+           dacValue[eqId]    = str->GetHdacValue(); // this will change below for MEANTH scan
+
            for (UInt_t hs=0; hs<6; hs++) {
              halfStaveScanned[eqId][hs] = str->GetHhalfStaveScanned(hs);
              dacHigh[eqId][hs]          = str->GetHdacHigh(hs);
              dacLow[eqId][hs]           = str->GetHdacLow(hs);
              TPAmp[eqId][hs]            = str->GetHTPAmp(hs);
              for (UInt_t chip=0; chip<10; chip++) {
-               chipPresent[eqId][hs][chip]      = str->GetHchipPresent(hs,chip);
+               chipPresent[eqId][hs][chip] = str->GetHchipPresent(hs,chip);
+               if (type[eqId]==MEANTH && chipPresent[eqId][hs][chip]) dacValue[eqId] = str->GetHdacLow(hs);
              }
            }
            for (UInt_t chip=0; chip<10; chip++) {
@@ -336,19 +354,9 @@ int main(int argc, char **argv) {
              }
              scanObj[eqId]->SetType(type[eqId]);
              scanObj[eqId]->SetDataFormat(dataFormat[eqId]);
-             for (Int_t hs=0; hs<6; hs++) {
-             
-               // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!!
-               Bool_t halfStavePresent = str->GetHalfStavePresent(hs);
-               // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!!
-
+             for (Int_t hs=0; hs<6; hs++) {          
                for (UInt_t chip=0; chip<10; chip++) {
                  scanObj[eqId]->SetChipPresent(hs,chip,chipPresent[eqId][hs][chip]);
-
-                 // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!!
-                 if (halfStavePresent) scanObj[eqId]->SetChipPresent(hs,chip,kTRUE);
-                 // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!!
-
                }
              }
              scanObj[eqId]->SetRowStart(rowStart[eqId]);
@@ -438,11 +446,17 @@ int main(int argc, char **argv) {
   }
 
   
-  // clean up scan objects (which also saves them)
+  // clean up scan objects (which also saves them) , check if something happened...
+    Bool_t somethingHappened = kFALSE;
   for (UInt_t eqId=0; eqId<20; eqId++) {
-    if (scanObj[eqId]!=NULL) delete scanObj[eqId];
+    if (scanObj[eqId]!=NULL) {
+      delete scanObj[eqId];
+      somethingHappened = kTRUE;
+    }
+  }
+  if (!somethingHappened) {
+    printf("WARNING: No data processed. Are the calibration headers missing?\n");
   }
-
 
 
 
@@ -480,7 +494,7 @@ int main(int argc, char **argv) {
 
     // configure analyzer with tuning parameters etc:
     for (UInt_t i=0; i<nrTuningParams; i++) {
-      analyzer->SetParam(((TString*)paramNames.At(i))->Data(),((TString*)paramVals.At(i))->Data());
+      analyzer->SetParam(((TObjString*)paramNames.At(i))->GetString().Data(),((TObjString*)paramVals.At(i))->GetString().Data());
     }
 
     UInt_t type  = analyzer->GetType();
@@ -632,7 +646,7 @@ int main(int argc, char **argv) {
     delete handlerPermNoisy;
   }
 
-
+  printf("Opening id list file\n");
   TString idsFXSFileName = Form("%s/FXSids_run_%d.txt",saveDirIdsToFXS,runNr);
   ofstream idsFXSfile;
   idsFXSfile.open(idsFXSFileName.Data());
@@ -641,6 +655,7 @@ int main(int argc, char **argv) {
 
   // send noisy data to FXS
   if (nrNoisyFilesProduced>0) {
+    printf("Preparing noisy files\n");
     // send a tared file of all new noisy maps
     TString command = Form("cd %s; tar -cf noisy_scan.tar *",saveDirNoisyToFXS);
     //    printf("\n\n%s\n\n",command.Data());
@@ -659,6 +674,7 @@ int main(int argc, char **argv) {
 
   // send dcs config files to FXS
   if (nrDCSconfigFilesProduced>0) {
+    printf("Preparing DCS config files\n");
     // send a tared file of all the dcsConfig text files
     TString command = Form("cd %s; tar -cf dcsConfig.tar *",saveDirDCSconfigToFXS);
     //    printf("\n\n%s\n\n",command.Data());
@@ -678,6 +694,7 @@ int main(int argc, char **argv) {
   // send reference data to FXS
   for (UInt_t eqId=0; eqId<20; eqId++) {
     if (bScanInit[eqId]) {
+      printf("Preparing reference data for eq %d\n",eqId);
       TString fileName = Form("%s/SPDcal_run_%d_eq_%d.root",saveDirRef,runNr,eqId);
       TString id = Form("SPD_ref_scan_%d",eqId);
 #ifndef SPD_DA_OFF
@@ -692,9 +709,19 @@ int main(int argc, char **argv) {
   }
 
 
+  printf("Preparing id list file\n");
   idsFXSfile.close();
+  TString id = "SPD_id_list";
+#ifndef SPD_DA_OFF
+  status = daqDA_FES_storeFile(idsFXSFileName.Data(),id.Data());
+  if (status!=0) {
+    printf("Failed to export file %s , status %d\n",idsFXSFileName.Data(),status);
+    return -1;
+  }
+#endif
 
 
+  printf("DA finished.\n");
 
   return 0;
 }