]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONTRKGAINda.cxx
RAW QA only for calibration events
[u/mrichter/AliRoot.git] / MUON / MUONTRKGAINda.cxx
index 6d22ecdf0961b82d302dc6ecd9b0a3423eda5054..c1c6f5c38ef8b68ee6f000cbaf76177c3daa1410 100644 (file)
@@ -1,43 +1,43 @@
 /*
 Contact: Jean-Luc Charvet <jean-luc.charvet@cea.fr>
 Link: http://aliceinfo.cern.ch/static/Offline/dimuon/muon_html/README_Mchda
 Run Type: CALIBRATION
 DA Type: LDC
 Number of events needed: 400 events for each calibration run
 Input Files: Rawdata file (DATE format)
 Output Files: local dir (not persistent) -> MUONTRKGAINda_<run#>.par
 FXS -> run<#>_MCH_<ldc>_GAINS
 Trigger types used:
+ Contact: Jean-Luc Charvet <jean-luc.charvet@cea.fr>
+ Link: http://aliceinfo.cern.ch/static/Offline/dimuon/muon_html/README_Mchda
+ Run Type: CALIBRATION
+ DA Type: LDC
+ Number of events needed: 400 events for each calibration run
+ Input Files: Rawdata file (DATE format)
+ Output Files: local dir (not persistent) -> MUONTRKGAINda_<run#>.par
+ FXS -> run<#>_MCH_<ldc>_GAINS
+ Trigger types used:
 */
 
 /**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
+* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+*                                                                        *
+* Author: The ALICE Off-line Project.                                    *
+* Contributors are mentioned in the code where appropriate.              *
+*                                                                        *
+* Permission to use, copy, modify and distribute this software and its   *
+* documentation strictly for non-commercial purposes is hereby granted   *
+* without fee, provided that the above copyright notice appears in all   *
+* copies and that both the copyright notice and this permission notice   *
+* appear in the supporting documentation. The authors make no claims     *
+* about the suitability of this software for any purpose. It is          *
+* provided "as is" without express or implied warranty.                  *
+**************************************************************************/
 
 /* $Id$ */
 
 /*
 -------------------------------------------------------------------------
-  2009-05-11 New version: MUONTRKGAINda.cxx,v 1.0
 -------------------------------------------------------------------------
+ -------------------------------------------------------------------------
+ 2009-05-18 New version: MUONTRKGAINda.cxx,v 1.1
+ -------------------------------------------------------------------------
 
 Version for MUONTRKGAINda MUON tracking
 (A. Baldisseri, J.-L. Charvet)
+ Version for MUONTRKGAINda MUON tracking
+ (A. Baldisseri, J.-L. Charvet)
 
 
 Rem:  AliMUON2DMap stores all channels, even those which are not connected
 if pedMean == -1, channel not connected to a pad  
+ Rem:  AliMUON2DMap stores all channels, even those which are not connected
+ if pedMean == -1, channel not connected to a pad  
 
 
 */
@@ -97,66 +97,65 @@ extern "C" {
 int main(Int_t argc, Char_t **argv) 
 {
 
 Int_t status=0;
 TStopwatch timers;
 timers.Start(kTRUE); 
+ Int_t status=0;
+ TStopwatch timers;
+ timers.Start(kTRUE); 
 
 // needed for streamer application
 gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo",
+ // needed for streamer application
+ gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo",
                                        "*",
                                        "TStreamerInfo",
                                        "RIO",
                                        "TStreamerInfo()"); 
 
 // needed for Minuit plugin
 gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer",
+ // needed for Minuit plugin
+ gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer",
                                        "Minuit",
                                        "TMinuitMinimizer",
                                        "Minuit",
                                        "TMinuitMinimizer(const char*)");
 
 Char_t prefixDA[256]="MUONTRKGAINda"; // program prefix 
+ Char_t prefixDA[256]="MUONTRKGAINda"; // program prefix 
 
 Int_t skipEvents = 0;
 Int_t maxEvents  = 1000000;
 Int_t maxDateEvents  = 1000000;
 Char_t inputFile[256]="";
+ Int_t skipEvents = 0;
+ Int_t maxEvents  = 1000000;
+ Int_t maxDateEvents  = 1000000;
+ Char_t inputFile[256]="";
 
-  Int_t  nDateEvents = 0;
-  Int_t nGlitchErrors= 0;
-  Int_t nParityErrors= 0;
-  Int_t nPaddingErrors= 0;
-  Int_t recoverParityErrors = 1;
+ Int_t  nDateEvents = 0;
+ Int_t nGlitchErrors= 0;
+ Int_t nParityErrors= 0;
+ Int_t nPaddingErrors= 0;
 
 TString logOutputFile;
+ TString logOutputFile;
 
 Char_t flatFile[256]="";
 TString shuttleFile;
+ Char_t flatFile[256]="";
+ TString shuttleFile;
 
 Int_t nEventsRecovered = 0;
 Int_t nEvents = 0;
 UInt_t runNumber   = 0;
 Int_t  nChannel    = 0;
 ofstream filcout;
 Int_t nIndex = -1; 
+ Int_t nEventsRecovered = 0;
+ Int_t nEvents = 0;
+ UInt_t runNumber   = 0;
+ Int_t  nChannel    = 0;
+ ofstream filcout;
+ Int_t nIndex = -1; 
 
 // For DA Gain
 Int_t printLevel  = 0;  // printout (up to 2)
 Int_t plotLevel  = 2;  // plotout (up to 2)
 Int_t injCharge; 
+ // For DA Gain
Int_t printLevel  = 0;  // printout (default=0, =1 =>.ped , => .peak & .param)
Int_t plotLevel  = 1;  // plotout (default=1 => tree , =2 tree+Tgraph+fit)
+ Int_t injCharge; 
 
 Int_t nEntries = daqDA_ECS_getTotalIteration(); // usually = 11 = Nb of calibration runs
 Int_t nInit=1;  // = 0 all DAC values ; = 1 DAC=0 excluded (default=1)
 Int_t nbpf1=6;  // nb of points for linear fit (default=6) 
+ Int_t nEntries = daqDA_ECS_getTotalIteration(); // usually = 11 = Nb of calibration runs
+ Int_t nInit=1;  // = 0 all DAC values ; = 1 DAC=0 excluded (default=1)
+ Int_t nbpf1=6;  // nb of points for linear fit (default=6) 
 
 
 // decode the input line
 for (Int_t i = 1; i < argc; i++) // argument 0 is the executable name
-    {
-      Char_t* arg;
+ // decode the input line
+ for (Int_t i = 1; i < argc; i++) // argument 0 is the executable name
+   {
+     Char_t* arg;
 
-      arg = argv[i];
-      if (arg[0] != '-') 
+     arg = argv[i];
+     if (arg[0] != '-') 
        {
          // If only one argument and no "-" => DA calling from ECS
          if (argc == 2)
@@ -165,7 +164,7 @@ int main(Int_t argc, Char_t **argv)
            }
          continue;
        }
-      switch (arg[1])
+     switch (arg[1])
        {
        case 'f' : 
          i++;
@@ -175,22 +174,22 @@ int main(Int_t argc, Char_t **argv)
          i++;
          shuttleFile = argv[i];
          break;
-       case 'd' :
-         i++; 
-         printLevel=atoi(argv[i]);
-         break;
-       case 'g' :
-         i++; 
-         plotLevel=atoi(argv[i]);
-         break;
-       case 'i' :
-         i++; 
-         nbpf1=atoi(argv[i]);
-         break;
-       case 'j' :
-         i++; 
-         nInit=atoi(argv[i]);
-         break;
+//     case 'd' :
+//       i++; 
+//       printLevel=atoi(argv[i]);
+//       break;
+//     case 'g' :
+//       i++; 
+//       plotLevel=atoi(argv[i]);
+//       break;
+//     case 'i' :
+//       i++; 
+//       nbpf1=atoi(argv[i]);
+//       break;
+//     case 'j' :
+//       i++; 
+//       nInit=atoi(argv[i]);
+//       break;
        case 's' :
          i++; 
          skipEvents=atoi(argv[i]);
@@ -203,10 +202,6 @@ int main(Int_t argc, Char_t **argv)
          i++; 
          sscanf(argv[i],"%d",&maxEvents);
          break;
-       case 'p' : 
-         i++;
-         sscanf(argv[i],"%d",&recoverParityErrors);
-         break;
        case 'h' :
          i++;
          printf("\n******************* %s usage **********************",argv[0]);
@@ -221,14 +216,13 @@ int main(Int_t argc, Char_t **argv)
          printf("\n-a <Flat ASCII file>       (default = %s)",shuttleFile.Data()); 
          printf("\n");
          printf("\n Options");
-         printf("\n-d <print level>           (default = %d)",printLevel);
-         printf("\n-g <plot level>            (default = %d)",plotLevel);
-         printf("\n-i <nb linear points>      (default = %d)",nbpf1);
-         printf("\n-j start point of fit      (default = %d)",nInit);
+//       printf("\n-d <print level>           (default = %d)",printLevel);
+//       printf("\n-g <plot level>            (default = %d)",plotLevel);
+//       printf("\n-i <nb linear points>      (default = %d)",nbpf1);
+//       printf("\n-j start point of fit      (default = %d)",nInit);
          printf("\n-m <max date events>       (default = %d)",maxDateEvents);
          printf("\n-s <skip events>           (default = %d)",skipEvents);
          printf("\n-n <max events>            (default = %d)",maxEvents);
-         printf("\n-p <Recover parity errors> (default = %d)",recoverParityErrors);
 
          printf("\n\n");
          exit(-1);
@@ -236,68 +230,75 @@ int main(Int_t argc, Char_t **argv)
          printf("%s : bad argument %s (please check %s -h)\n",argv[0],argv[i],argv[0]);
          argc = 2; exit(-1); // exit if error
        } // end of switch  
-    } // end of for i  
+   } // end of for i  
 
 
-  //Gain object
-  AliMUONGain* muonGain = new AliMUONGain();
-  muonGain->SetprefixDA(prefixDA);
-  muonGain->SetAliRootDataFileName(); // MUONTRKGAINda_data.root  
-  muonGain->SetAliPrintLevel(printLevel);
-  muonGain->SetAliPlotLevel(plotLevel);
+ //Gain object
+ AliMUONGain* muonGain = new AliMUONGain();
+ muonGain->SetprefixDA(prefixDA);
+ muonGain->SetAliRootDataFileName(); // MUONTRKGAINda_data.root  
 
 // Reading current iteration
 nIndex = daqDA_ECS_getCurrentIteration();
 if(nIndex<0)nIndex=0; // compute gain directly from existing root data file
+ // Reading current iteration
+ nIndex = daqDA_ECS_getCurrentIteration();
+ if(nIndex<0)nIndex=0; // compute gain directly from existing root data file
 
 
 
 
-  if(nIndex==0) // compute gain from existing root data file: MUONTRKGAINda_data.root
-    {
-      sprintf(flatFile,"%s_data.log",prefixDA);
-      logOutputFile=flatFile;
-      filcout.open(logOutputFile.Data());
-      muonGain->SetAlifilcout(&filcout);
-
-      sprintf(flatFile,"%s_data.par",prefixDA);
-      if(shuttleFile.IsNull())shuttleFile=flatFile;
-
-      muonGain->SetAliIndex(nIndex); // fIndex 
-      muonGain->SetAliInit(nInit); // fnInit
-      muonGain->SetAliNbpf1(nbpf1); // fnbpf1
-      muonGain->MakeGainStore(shuttleFile);
-    }
+ if(nIndex==0) // compute gain from existing root data file: MUONTRKGAINda_data.root
+   {
+     sprintf(flatFile,"%s_data.log",prefixDA);
+     logOutputFile=flatFile;
+     filcout.open(logOutputFile.Data());
+     muonGain->SetAlifilcout(&filcout);
 
+     sprintf(flatFile,"%s_data.par",prefixDA);
+     if(shuttleFile.IsNull())shuttleFile=flatFile;
 
+     muonGain->SetAliPrintLevel(printLevel);
+     muonGain->SetAliPlotLevel(plotLevel);
+     muonGain->SetAliIndex(nIndex); // fIndex 
+     muonGain->SetAliInit(nInit); // fnInit
+     muonGain->SetAliNbpf1(nbpf1); // fnbpf1
+     muonGain->MakeGainStore(shuttleFile);
+   }
 
-  if(nIndex>0) // normal case: reading calibration runs before computing gains
-    {
-      UShort_t manuId;  
-      UChar_t channelId;
-      UShort_t charge;
+
+
+ if(nIndex>0) // normal case: reading calibration runs before computing gains
+   {
+     UShort_t manuId;  
+     UChar_t channelId;
+     UShort_t charge;
          
-      // DAC values stored in array vDAC (reading dbfile in DETDB)
-      //   Int_t vDAC[11] = {0,200,400,800,1200,1600,2000,2500,3000,3500,4000}; // DAC values
-      Int_t vDAC[11]; // DAC values
-      Char_t *dbfile;
-      dbfile="muontrkcalibvalues.dat";
-      cout << "\n *** Copy: " << dbfile << " from DetDB to working directory  *** \n" << endl;
-      status=daqDA_DB_getFile(dbfile,dbfile);
-      ifstream filein(dbfile,ios::in); Int_t k=0, kk;
-      while (k<nEntries ) { filein >> kk >> vDAC[k] ; k++; }
+     // DAC values stored in array vDAC (reading dbfile in DETDB)
+     //   Int_t vDAC[11] = {0,200,400,800,1200,1600,2000,2500,3000,3500,4000}; // DAC values
+     Int_t vDAC[11]; // DAC values
+     Char_t *dbfile;
+     dbfile="mutrkcalibvalues";
+     cout << "\n *** Copy: " << dbfile << " from DetDB to working directory  *** \n" << endl;
+     status=daqDA_DB_getFile(dbfile,dbfile);
+     ifstream filein(dbfile,ios::in); Int_t k=0, kk;
+     while (k<nEntries ) { filein >> kk >> vDAC[k] ; k++; }
+     filein >> nInit; // = 0 all DAC values fitted ; = 1 DAC=0 excluded (default=1)
+     filein >> nbpf1; // nb of points for linear fit (default=6) 
+     filein >> printLevel;  // printout (default=0, =1 =>.ped /run, =2 => .peak & .param)
+     filein >> plotLevel;  // plotout (default=1 => tree , =2 tree+Tgraph+fit)
+     cout << "nInit=" << nInit << " Nb linear pts=" << nbpf1 << "    Print level=" << printLevel << "    Plot Level=" << plotLevel << endl;
+     muonGain->SetAliPrintLevel(printLevel);
+     muonGain->SetAliPlotLevel(plotLevel);
                
-      injCharge=vDAC[nIndex-1];
+     injCharge=vDAC[nIndex-1];
 
-      // Rawdeader, RawStreamHP
-      AliRawReader* rawReader = AliRawReader::Create(inputFile);
-      AliMUONRawStreamTrackerHP* rawStream  = new AliMUONRawStreamTrackerHP(rawReader);    
-      rawStream->DisableWarnings();
-      rawStream->EnabbleErrorLogger();
+     // Rawdeader, RawStreamHP
+     AliRawReader* rawReader = AliRawReader::Create(inputFile);
+     AliMUONRawStreamTrackerHP* rawStream  = new AliMUONRawStreamTrackerHP(rawReader);    
+     rawStream->DisableWarnings();
+     rawStream->EnabbleErrorLogger();
 
-      cout << "\n" << prefixDA << " : Reading data from file " << inputFile  << endl;
+     cout << "\n" << prefixDA << " : Reading data from file " << inputFile  << endl;
 
-      while (rawReader->NextEvent())
+     while (rawReader->NextEvent())
        {
          if (nDateEvents >= maxDateEvents) break;
          if (nEvents >= maxEvents) break;
@@ -321,7 +322,7 @@ int main(Int_t argc, Char_t **argv)
          // Output log file initialisations
          if(nDateEvents==0)
            {
-             sprintf(flatFile,"%s_%d.log",prefixDA,runNumber);
+             sprintf(flatFile,"%s.log",prefixDA);
              logOutputFile=flatFile;
 
              filcout.open(logOutputFile.Data());
@@ -374,7 +375,7 @@ int main(Int_t argc, Char_t **argv)
          else
            {
              // Events with errors
-             if (recoverParityErrors && eventParityErrors && !eventGlitchErrors&& !eventPaddingErrors)
+             if (eventParityErrors && !eventGlitchErrors&& !eventPaddingErrors)
                {
                  // Recover parity errors -> compute pedestal for all good buspatches
                  if ( TEST_SYSTEM_ATTRIBUTE( rawReader->GetAttributes(),
@@ -436,7 +437,7 @@ int main(Int_t argc, Char_t **argv)
                    } // end of while( (busPatch = (AliMUONRawStreamTrackerHP ...
                  nEvents++;
                  nEventsRecovered++;
-               } //end of if (recoverParityErrors && eventParityErrors && !eventGlitchErrors&& !eventPaddingErrors)
+               } //end of if (eventParityErrors && !eventGlitchErrors&& !eventPaddingErrors)
              else
                {
                  // Fatal errors reject the event
@@ -466,62 +467,73 @@ int main(Int_t argc, Char_t **argv)
          if (eventPaddingErrors) nPaddingErrors++;
 
        } // while (rawReader->NextEvent())
-      delete rawReader;
-      delete rawStream;
-
-      // process and store mean peak values in .root file
-     sprintf(flatFile,"%s_%d.par",prefixDA,runNumber);
-      if(shuttleFile.IsNull())shuttleFile=flatFile;
-      injCharge=vDAC[nIndex-1];
-      muonGain->SetAliIndex(nIndex); // fIndex 
-      muonGain->SetAliInjCharge(injCharge);
-      muonGain->SetAliNEvents(nEvents);
-      muonGain->SetAliRunNumber(runNumber);
-      muonGain->SetAliNChannel(nChannel);
-      muonGain->MakePedStoreForGain(shuttleFile);
-
-      // writing some counters
-      cout << endl;
-      cout << prefixDA << " : Nb of DATE events           = " << nDateEvents    << endl;
-      cout << prefixDA << " : Nb of Glitch errors         = "   << nGlitchErrors  << endl;
-      cout << prefixDA << " : Nb of Parity errors         = "   << nParityErrors  << endl;
-      cout << prefixDA << " : Nb of Padding errors        = "   << nPaddingErrors << endl;             
-      cout << prefixDA << " : Nb of events recovered      = "   << nEventsRecovered<< endl;
-      cout << prefixDA << " : Nb of events without errors = "   << nEvents-nEventsRecovered<< endl;
-      cout << prefixDA << " : Nb of events used           = "   << nEvents        << endl;
-
-      filcout << endl;
-      filcout << prefixDA << " : Nb of DATE events           = " << nDateEvents    << endl;
-      filcout << prefixDA << " : Nb of Glitch errors         = "   << nGlitchErrors << endl;
-      filcout << prefixDA << " : Nb of Parity errors         = "   << nParityErrors << endl;
-      filcout << prefixDA << " : Nb of Padding errors        = "   << nPaddingErrors << endl;
-      filcout << prefixDA << " : Nb of events recovered      = "   << nEventsRecovered<< endl; 
-      filcout << prefixDA << " : Nb of events without errors = "   << nEvents-nEventsRecovered<< endl;
-      filcout << prefixDA << " : Nb of events used           = "   << nEvents        << endl;
-
-      // Computing gain 
-      if(nIndex==nEntries)
+     delete rawReader;
+     delete rawStream;
+
+     // process and store mean peak values in .root file
+    sprintf(flatFile,"%s.par",prefixDA);
+     if(shuttleFile.IsNull())shuttleFile=flatFile;
+     injCharge=vDAC[nIndex-1];
+     muonGain->SetAliIndex(nIndex); // fIndex 
+     muonGain->SetAliInjCharge(injCharge);
+     muonGain->SetAliNEvents(nEvents);
+     muonGain->SetAliRunNumber(runNumber);
+     muonGain->SetAliNChannel(nChannel);
+     muonGain->MakePedStoreForGain(shuttleFile);
+
+     // writing some counters
+     cout << endl;
+     cout << prefixDA << " : Nb of DATE events           = " << nDateEvents    << endl;
+     cout << prefixDA << " : Nb of Glitch errors         = "   << nGlitchErrors  << endl;
+     cout << prefixDA << " : Nb of Parity errors         = "   << nParityErrors  << endl;
+     cout << prefixDA << " : Nb of Padding errors        = "   << nPaddingErrors << endl;              
+     cout << prefixDA << " : Nb of events recovered      = "   << nEventsRecovered<< endl;
+     cout << prefixDA << " : Nb of events without errors = "   << nEvents-nEventsRecovered<< endl;
+     cout << prefixDA << " : Nb of events used           = "   << nEvents        << endl;
+
+     filcout << endl;
+     filcout << prefixDA << " : Nb of DATE events           = " << nDateEvents    << endl;
+     filcout << prefixDA << " : Nb of Glitch errors         = "   << nGlitchErrors << endl;
+     filcout << prefixDA << " : Nb of Parity errors         = "   << nParityErrors << endl;
+     filcout << prefixDA << " : Nb of Padding errors        = "   << nPaddingErrors << endl;
+     filcout << prefixDA << " : Nb of events recovered      = "   << nEventsRecovered<< endl;  
+     filcout << prefixDA << " : Nb of events without errors = "   << nEvents-nEventsRecovered<< endl;
+     filcout << prefixDA << " : Nb of events used           = "   << nEvents        << endl;
+
+     // Computing gain 
+     if(nIndex==nEntries)
        {
          muonGain->SetAliInit(nInit); // fnInit
          muonGain->SetAliEntries(nEntries); // fnEntries
          muonGain->SetAliNbpf1(nbpf1); // fnbpf1
-         muonGain->MakeGainStore(shuttleFile);
+         muonGain->MakeGainStore(shuttleFile);
        }
 
-      // Copying files to local DB folder defined by DAQ_DETDB_LOCAL
-      Char_t *dir;
-      dir= getenv("DAQ_DETDB_LOCAL");
-      unsigned int nLastVersions = 2;
-      cout << "\n *** Output files stored locally in " << dir << " (nb of previous versions = " << nLastVersions << ") ***" << endl;
-  filcout << "\n *** Output files stored locally in " << dir << " (nb of previous versions = " << nLastVersions << ") ***" << endl;
+// ouput files
+      filcout << endl;
+      filcout << prefixDA << " : Root data file         : " << muonGain->GetRootDataFileName() << endl;
+      filcout << prefixDA << " : Output logfile         : " << logOutputFile  << endl;
+      filcout << prefixDA << " : Gain Histo file        : " << muonGain->GetHistoFileName() << endl;
+      filcout << prefixDA << " : Gain file (to SHUTTLE) : " << shuttleFile << endl;
 
+//      Copying files to local DB folder defined by DAQ_DETDB_LOCAL
+       Char_t *dir;
+      dir= getenv("DAQ_DETDB_LOCAL");
+      unsigned int nLastVersions = 99;
+      cout << "\n ***  Local DataBase: " << dir << " (Max= " << nLastVersions << ") ***" << endl;
       status = daqDA_localDB_storeFile(logOutputFile.Data(),nLastVersions);
-      if(nIndex==nEntries)status = daqDA_localDB_storeFile(muonGain->GetRootDataFileName(),nLastVersions);
-      status = daqDA_localDB_storeFile(muonGain->GetHistoFileName(),nLastVersions);
-      status = daqDA_localDB_storeFile(shuttleFile.Data(),nLastVersions);
-
-    }
+      printf(" Store file : %s   status = %d\n",logOutputFile.Data(),status);
+      if(nIndex==nEntries)
+       {
+        status = daqDA_localDB_storeFile(muonGain->GetRootDataFileName(),nLastVersions);
+        printf(" Store file : %s   status = %d\n",muonGain->GetRootDataFileName(),status);
+        status = daqDA_localDB_storeFile(muonGain->GetHistoFileName(),nLastVersions);
+        printf(" Store file : %s   status = %d\n",muonGain->GetHistoFileName(),status);
+        status = daqDA_localDB_storeFile(shuttleFile.Data(),nLastVersions);
+        printf(" Store file : %s   status = %d\n",shuttleFile.Data(),status);
+       }      
 
+    } // end (nIndex>0)
 
 // ouput files
   cout << endl;
@@ -529,13 +541,7 @@ int main(Int_t argc, Char_t **argv)
   cout << prefixDA << " : Output logfile         : " << logOutputFile  << endl;
   cout << prefixDA << " : Gain Histo file        : " << muonGain->GetHistoFileName() << endl;
   cout << prefixDA << " : Gain file (to SHUTTLE) : " << shuttleFile << endl;   
-
-  cout << endl;
-  filcout << prefixDA << " : Root data file         : " << muonGain->GetRootDataFileName() << endl;
-  filcout << prefixDA << " : Output logfile         : " << logOutputFile  << endl;
-  filcout << prefixDA << " : Gain Histo file        : " << muonGain->GetHistoFileName() << endl;
-  filcout << prefixDA << " : Gain file (to SHUTTLE) : " << shuttleFile << endl;   
-
 
   // Transferring to OCDB via the SHUTTLE
   printf("\n *****  STORE FILE in FES ****** \n");
@@ -550,8 +556,10 @@ int main(Int_t argc, Char_t **argv)
     }
   else printf(" %s successfully exported to FES  \n",shuttleFile.Data());
 
+
   filcout.close();
   timers.Stop();
   printf("\nExecution time : R:%7.2fs C:%7.2fs\n", timers.RealTime(), timers.CpuTime());
   return status;
 }
+