ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TTimeStamp.h>
#include <TMap.h>
#include <TMath.h>
#include <TFile.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TRandom.h>
#include <TSystem.h>
#include <AliDCSValue.h>
#endif

//////////////////////////////////////////////////////////////////////////////////////
// Generator of testing data for AliITSDCSPreprocessorSDD and  AliITSAnalyzerrSDD   //
// Origin: F.Prino, Torino, prino@to.infn.it                                        //
//         V.Pospisil, CTU Prague, gdermog@seznam.cz                                //
//////////////////////////////////////////////////////////////////////////////////////

TMap* CreateRealisticMap( TTimeStamp startTime, TTimeStamp stopTime );
TMap* CreateRandomMap( Int_t maxRecords = 1000, Int_t randomTimeStamps = 0 );
void GenerateOutputFiles( TMap *map, char *dir );

Int_t sizeOfMapContent = 0;

void CreateSDDDCSMap( void )
{

 TTimeStamp startT( 2008, 2, 7, 15, 0, 0 );
 TTimeStamp stopT( 2008, 2, 7, 18, 0, 0 );
                        // The beginning and the end of the simulated run

//  delete gRandom;
//  gRandom = new TRandom2;
 gRandom->SetSeed(0);

/* Macro can generate random purely random data or simulate DCS. Choose
   one of the methods - CreateRandomMap() or CreateRealisticMap() */

// TMap *outMap = CreateRandomMap( 1000 );
 TMap *outMap = CreateRealisticMap( startT, stopT );

 GenerateOutputFiles( outMap, "./maps_3h_SIM" );

 TFile newfile( "DCSAliasMap_3h_SIM.root", "RECREATE" );

 printf( "Writting map into the file ...\n");

 outMap->Write( "DCSAliasMap", TObject::kSingleKey );

 printf( "DCSAliasMap created, it size is %i byte ...\n", sizeOfMapContent );

} /*CreateMap*/


/***************************************************************/
/*     DCS simulation setup - used in CreateRealisticMap()     */
/*   Choose simulation setup by changing following variables   */
/***************************************************************/

// --- Temperature (left side) - behavior of SDD chip -----------

 Float_t mvalTL = 20.0; // Mean value of temperature
 Float_t fluctTL = 0.5; // Fluctuation (gaussian sigma)

// --- Temperature readout (left side) - behavior of DCS --------

 Int_t freqROTL = 300;  // Frequency of fixed readout
 Float_t fluctROTL = 5.0;
                        // Allowed fluctuation (%)

// Temperature readout status (left side) - behavior of SDD chip

  Int_t freqROStTL = 300;// Frequency of fixed readout
  Float_t failureTL = 0.01;
                        // Probability of thermometer
                        //  failure (in one hour)

// --- Temperature (right side) - behavior of SDD chip ----------

 Float_t mvalTR = 20.0; // Mean value of temperature
 Float_t fluctTR = 0.5;// Fluctuation (gaussian sigma)

// --- Temperature readout (right side) - behavior of DCS -------

 Int_t freqROTR = 300;   // Frequency of fixed readout
 Float_t fluctROTR = 5.0;
                        // Allowed fluctuation (%)

// Temperature readout status (right side) - behavior of SDD

  Int_t freqROStTR = 300;// Frequency of fixed readout
  Float_t failureTR = 0.01;
                        // Probability of thermometer
                        //  failure (in one hour) 

// --- High voltage  - behavior of SDD voltage source -----------

 Float_t mvalHV = 1791.0;
                        // Mean value of HV
 Float_t fluctHV = 0.03;// Fluctuation (gaussian sigma)

// --- High voltage readout - behavior of DCS -------------------

 Int_t freqROHV = 300;   // Frequency of fixed readout
 Float_t fluctROHV = 0.01;
                        // Allowed fluctuation (%)

// --- High voltage readout status - behavior of SDD voltage ----

  Int_t freqROOK = 300;  // Frequency of fixed readout
  Float_t failureHV  = 0.005;
                        // Probability of HV source
                        //  failure (in one hour) 

// --- Medium voltage  - behavior of SDD voltage source --------

 Float_t mvalMV = 45.0; // Mean value of MV
 Float_t fluctMV = 0.005;
                        // Fluctuation (gaussian sigma)

// --- Medium voltage readout - behavior of DCS -----------------

 Int_t freqROMV = 300;   // Frequency of fixed readout
 Float_t fluctROMV = 0.1;
                        // Allowed fluctuation (%)

// --- Medium voltage readout status - behavior of SDD voltage --

 Float_t failureMV  = 0.005;
                        // Probability of MV source
                        //  failure (in one hour)

/***************************************************************/
/*   ITS geometry setup                                        */
/***************************************************************/

 Int_t kNladders3=14;
 Int_t kNladders4=22;
 Int_t kNmodLad3=6;
 Int_t kNmodLad4=8;

/***************************************************************/

//----------------------------------------------------------------------------------------

TMap* CreateRealisticMap( TTimeStamp startTime, TTimeStamp stopTime )
{
  // Creates a DCS structure
  // The structure is the following:
  //   TMap (key --> value)
  //     <DCSAlias> --> <valueList>
  //     <DCSAlias> is a string
  //     <valueList> is a TObjArray of AliDCSValue
  //     An AliDCSValue consists of timestamp and a value in form of a AliSimpleValue

  TMap* aliasMap = new TMap;
  aliasMap->SetOwner(1);
                        // Empty map is created

  sizeOfMapContent += sizeof( TMap );

  TString aliasName;
  Char_t dpName[50];
  Int_t created = 0;
  Int_t created1 = 0;   // DCS records counter

  Double_t failureTLpersec;
  Double_t failureTRpersec;
  Double_t failureHVpersec;
  Double_t failureMVpersec;
                        // Probabilities of failure per one second
  Double_t lambda;
  lambda = ( TMath::Log( 1.0 - failureTL ) ) / -3600.0;
  failureTLpersec = 1.0 - TMath::Exp(-lambda );
  lambda = ( TMath::Log( 1.0 - failureTR ) ) / -3600.0;
  failureTRpersec = 1.0 - TMath::Exp(-lambda );
  lambda = ( TMath::Log( 1.0 - failureHV ) ) / -3600.0;
  failureHVpersec = 1.0 - TMath::Exp(-lambda );
  lambda = ( TMath::Log( 1.0 - failureMV ) ) / -3600.0;
  failureMVpersec = 1.0 - TMath::Exp(-lambda );
                        // Probabilities of failure per one second are counted

  fluctROTL /= 100.0;
  fluctROTR /= 100.0;
  fluctROHV /= 100.0;
  fluctROMV /= 100.0;   // Percents to fractions

  Double_t failureOK = ( failureHV + failureMV ) / 2.0;
                        // This value is used only for noise in timing

  for( Int_t iLay = 3; iLay < 5; iLay++ )
  {

      Int_t maxLad = ( iLay == 3) ? kNladders3 : kNladders4;
      Int_t maxMod = ( iLay == 3) ? kNmodLad3 : kNmodLad4;

      for(Int_t iLad=0; iLad<maxLad; iLad++)
      {
         for(Int_t iMod=0; iMod<maxMod; iMod++)
         {

            fprintf( stderr, "Simulating data taking for layer %i, ladder %i, module %i ... \n", iLay, iLad, iMod );

            TObjArray* valueSetOK = new TObjArray;
            TObjArray* valueSetHV = new TObjArray;
            TObjArray* valueSetMV = new TObjArray;
            TObjArray* valueSetTL = new TObjArray;
            TObjArray* valueSetTR = new TObjArray;
            TObjArray* valueSetStTL = new TObjArray;
            TObjArray* valueSetStTR = new TObjArray;

            sizeOfMapContent += 7 * sizeof( TObjArray );

            valueSetOK->SetOwner(1);
            valueSetHV->SetOwner(1);
            valueSetMV->SetOwner(1);
            valueSetTL->SetOwner(1);
            valueSetTR->SetOwner(1);
            valueSetStTL->SetOwner(1);
            valueSetStTR->SetOwner(1);

            Float_t actualTL, actualTR;
            Float_t actualHV, actualMV;
            Int_t   actualStTL = 1;
            Int_t   actualStTR = 1;
            Int_t   actualStHV = 1;
            Int_t   actualStMV = 1;
                             // Readout devices are alive/dead

            Float_t lastTL = mvalTL;
            Float_t lastTR = mvalTR;
            Float_t lastHV = mvalHV;
            Float_t lastMV = mvalMV;
                             // Last written values - udes for threshold readout

            Int_t counterTL = 0;
            Int_t counterTR = 0;
            Int_t counterHV = 0;
            Int_t counterMV = 0;
            Int_t counterStTL = 0;
            Int_t counterStTR = 0;
            Int_t counterOK = 0;
                              // Periodic readout counters

            Int_t endingTimeStamp = /*1197477000;*/ stopTime.GetSec();

            for( Int_t timeLoop = /*1197470000 */ startTime.GetSec(); timeLoop < endingTimeStamp; timeLoop ++ )
            {                 // Loop goes through period of run second per second and determines
                              //  all values according to rules of DCS

               actualTL = gRandom->Gaus( mvalTL, fluctTL );
               actualTR = gRandom->Gaus( mvalTR, fluctTR );
               actualHV = gRandom->Gaus( mvalHV, fluctHV );
               actualMV = gRandom->Gaus( mvalMV, fluctMV );
                              // Generates random values of temperatures and voltages
                              //  in given ranges

               if( gRandom->Rndm() < failureTLpersec ) 
                if( actualStTL ) actualStTL = 0; else if( gRandom->Rndm() < 0.1 ) actualStTL = 1;
               if( gRandom->Rndm() < failureTRpersec ) 
                if( actualStTR ) actualStTR = 0; else if( gRandom->Rndm() < 0.1 ) actualStTR = 1;
               if( gRandom->Rndm() < failureHVpersec ) 
                if( actualStHV ) actualStHV = 0; else if( gRandom->Rndm() < 0.1 ) actualStHV = 1;
               if( gRandom->Rndm() < failureMVpersec ) 
                if( actualStMV ) actualStMV = 0; else if( gRandom->Rndm() < 0.1 ) actualStMV = 1;
                              // Decides if any thermometer or voltage source becomes 
                              //  dead (or alive again, but this have much 10x les probability )

               if( gRandom->Rndm() < failureTL ) counterTL++;
               if( gRandom->Rndm() < failureTL ) counterTL--;
               if( gRandom->Rndm() < failureTR ) counterTR++;
               if( gRandom->Rndm() < failureTR ) counterTR--;
               if( gRandom->Rndm() < failureHV ) counterHV++;
               if( gRandom->Rndm() < failureHV ) counterHV--;
               if( gRandom->Rndm() < failureMV ) counterMV++;
               if( gRandom->Rndm() < failureMV ) counterMV--;
               if( gRandom->Rndm() < failureTL ) counterStTL++;
               if( gRandom->Rndm() < failureTL ) counterStTL--;
               if( gRandom->Rndm() < failureTR ) counterStTR++;
               if( gRandom->Rndm() < failureTR ) counterStTR--;
               if( gRandom->Rndm() < failureOK ) counterOK++;
               if( gRandom->Rndm() < failureOK ) counterOK--;
                        // Simulating noise in the clock frequency

               if( counterTL >= freqROTL )
                { valueSetTL->Add( new AliDCSValue( actualTL, timeLoop ) ); lastTL = actualTL; counterTL = 0; created++; }
               if( counterTR >= freqROTR )
                { valueSetTR->Add( new AliDCSValue( actualTR, timeLoop ) ); lastTR = actualTR; counterTR = 0; created++; }
               if( counterHV >= freqROHV )
                { valueSetHV->Add( new AliDCSValue( actualHV, timeLoop ) ); lastHV = actualHV; counterHV = 0; created++; }
               if( counterMV >= freqROMV )
                { valueSetMV->Add( new AliDCSValue( actualMV, timeLoop ) ); lastMV = actualMV; counterMV = 0; created++; }
               if( counterStTL >= freqROStTL )
                { valueSetStTL->Add( new AliDCSValue( actualStTL, timeLoop ) ); counterStTL = 0; created++; }
               if( counterStTR >= freqROStTR )
                { valueSetStTR->Add( new AliDCSValue( actualStTR, timeLoop ) ); counterStTR = 0; created++; }
               if( counterOK >= freqROOK )
                { valueSetOK->Add( new AliDCSValue( (Bool_t)(actualStHV & actualStMV), timeLoop ) ); counterOK = 0; created++; }
                        // Periodic readout

               if( TMath::Abs( (lastTL - actualTL) / lastTL ) > fluctROTL )
                { valueSetTL->Add( new AliDCSValue( actualTL, timeLoop ) ); lastTL = actualTL; counterTL = 0; created1++; }
               if( TMath::Abs( (lastTR - actualTR) / lastTR ) > fluctROTR )
                { valueSetTR->Add( new AliDCSValue( actualTR, timeLoop ) ); lastTR = actualTR; counterTR = 0; created1++; }
               if( TMath::Abs( (lastHV - actualHV) / lastHV ) > fluctROHV )
                { valueSetHV->Add( new AliDCSValue( actualHV, timeLoop ) ); lastHV = actualHV; counterHV = 0; created1++; }
               if( TMath::Abs( (lastMV - actualMV) / lastMV ) > fluctROMV )
                { valueSetMV->Add( new AliDCSValue( actualMV, timeLoop ) ); lastMV = actualMV; counterMV = 0; created1++; }
                        // Treshold readout

               counterTL++;
               counterTR++;
               counterHV++;
               counterMV++;
               counterStTL++;
               counterStTR++;
               counterOK++;

            } /*for( timeLoop )*/

            sprintf( dpName, "SDD_LAYER%i_LADDER%02d_MODULE%d_OK", iLay, iLad, iMod );
            aliasName = dpName;
            aliasMap->Add( new TObjString(aliasName), valueSetOK );

            sprintf( dpName, "SDD_LAYER%i_LADDER%02d_MODULE%d_HV", iLay, iLad, iMod );
            aliasName = dpName;
            aliasMap->Add( new TObjString(aliasName), valueSetHV );

            sprintf( dpName, "SDD_LAYER%i_LADDER%02d_MODULE%d_MV", iLay, iLad, iMod );
            aliasName = dpName;
            aliasMap->Add( new TObjString(aliasName), valueSetMV );

            sprintf( dpName, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_L", iLay, iLad, iMod );
            aliasName = dpName;
            aliasMap->Add( new TObjString(aliasName), valueSetTL );

            sprintf( dpName, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_R", iLay, iLad, iMod );
            aliasName = dpName;
            aliasMap->Add( new TObjString(aliasName), valueSetTR );

            sprintf( dpName, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_L_STATE", iLay, iLad, iMod );
            aliasName = dpName;
            aliasMap->Add( new TObjString(aliasName), valueSetStTL );

            sprintf( dpName, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_R_STATE", iLay, iLad, iMod );
            aliasName = dpName;
            aliasMap->Add( new TObjString(aliasName), valueSetStTR );

         } /*for( iMod ) */
      } /*for( iLad )*/
  } /*for( iLay )*/

  fprintf(  stderr, "\nCreated %i objects of type AliDCSValue (%i periodic + %i treshold)... \n", 
            created + created1, created, created1 );

  sizeOfMapContent += (created + created1 ) * ( sizeof( AliDCSValue ) + sizeof( AliDCSValue * ) );

  return aliasMap;

} /*CreateRealisticMap*/

//----------------------------------------------------------------------------------------


TMap* CreateRandomMap( Int_t maxRecords , Int_t randomTimeStamps  )
{
  // Creates a DCS structure
  // The structure is the following:
  //   TMap (key --> value)
  //     <DCSAlias> --> <valueList>
  //     <DCSAlias> is a string
  //     <valueList> is a TObjArray of AliDCSValue
  //     An AliDCSValue consists of timestamp and a value in form of a AliSimpleValue


  TMap* aliasMap = new TMap;
  aliasMap->SetOwner(1);

  sizeOfMapContent += sizeof( TMap );

  TString aliasName;
  Char_t dpName[50];
  Int_t created = 0;

  for( Int_t iLay = 3; iLay < 5; iLay++ )
  {

      Int_t maxLad = ( iLay == 3) ? kNladders3 : kNladders4;
      Int_t maxMod = ( iLay == 3) ? kNmodLad3 : kNmodLad4;

      for(Int_t iLad = 0; iLad < maxLad; iLad++)
      {
         for(Int_t iMod =0 ; iMod < maxMod;iMod++)
         {

            fprintf( stderr, "Generating data for layer %i, ladder %i, module %i ... \n", iLay, iLad, iMod );

            TObjArray* valueSetOK = new TObjArray;
            TObjArray* valueSetH = new TObjArray;
            TObjArray* valueSetM = new TObjArray;
            TObjArray* valueSetTL = new TObjArray;
            TObjArray* valueSetTR = new TObjArray;
            TObjArray* valueSetStTL = new TObjArray;
            TObjArray* valueSetStTR = new TObjArray;

            sizeOfMapContent += 7 * sizeof( TObjArray );

            valueSetOK->SetOwner(1);
            valueSetH->SetOwner(1);
            valueSetM->SetOwner(1);
            valueSetTL->SetOwner(1);
            valueSetTR->SetOwner(1);
            valueSetStTL->SetOwner(1);
            valueSetStTR->SetOwner(1);

            Int_t nrOfRecords;
            AliDCSValue* dcsVal;
            Int_t timeStamp;

            sprintf(dpName,"SDD_LAYER%i_LADDER%02d_MODULE%d_OK", iLay,iLad,iMod);
            aliasName=dpName;
	    nrOfRecords = (Int_t)(maxRecords * ( gRandom->Rndm() ) );
            timeStamp = 1000000000;
	    for( Int_t recLoop = 0; recLoop < nrOfRecords; recLoop ++ )
            {
               if( randomTimeStamps )
                timeStamp = (Int_t)(1200000000*(gRandom->Rndm()));
               else
                timeStamp += (Int_t)(50*(gRandom->Rndm()) );
               if( 1000*(gRandom->Rndm()) > 50 ) 
                dcsVal = new AliDCSValue((Bool_t)1, timeStamp);
               else
                dcsVal = new AliDCSValue((Bool_t)0, timeStamp);
               valueSetOK->Add(dcsVal);
            } /*for( recLoop )*/
            aliasMap->Add(new TObjString(aliasName), valueSetOK);
            created += nrOfRecords;

            sprintf(dpName,"SDD_LAYER%i_LADDER%02d_MODULE%d_HV", iLay, iLad,iMod);
            aliasName=dpName;
            nrOfRecords = (Int_t)(maxRecords * ( gRandom->Rndm() ));
            timeStamp = 1000000000;
            for( Int_t recLoop = 0; recLoop < nrOfRecords; recLoop ++ )
            {
               if( randomTimeStamps )
		timeStamp = (Int_t)(1200000000*(gRandom->Rndm()));
               else
                timeStamp += (Int_t)(50*(gRandom->Rndm()) );
               dcsVal = new AliDCSValue( (Float_t)( 1600 + 200*(gRandom->Rndm()) ), timeStamp );
               valueSetH->Add(dcsVal);
            } /*for( recLoop )*/
            aliasMap->Add(new TObjString(aliasName), valueSetH);
            created += nrOfRecords;

            sprintf(dpName,"SDD_LAYER%i_LADDER%02d_MODULE%d_MV", iLay, iLad,iMod);
            aliasName=dpName;
	    nrOfRecords = (Int_t)(maxRecords * ( gRandom->Rndm() ));
            timeStamp = 1000000000;
            for( Int_t recLoop = 0; recLoop < nrOfRecords; recLoop ++ )
            {
               if( randomTimeStamps )
		timeStamp = (Int_t)(1200000000*(gRandom->Rndm()));
               else
                timeStamp += (Int_t)(50*(gRandom->Rndm()) );
               dcsVal = new AliDCSValue( (Float_t)( 30 + 20*(gRandom->Rndm()) ), timeStamp );
               valueSetM->Add(dcsVal);
            } /*for( recLoop )*/
            aliasMap->Add(new TObjString(aliasName), valueSetM);
            created += nrOfRecords;

            sprintf(dpName,"SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_L", iLay, iLad,iMod);
            aliasName=dpName;
	    nrOfRecords = (Int_t)(maxRecords * ( gRandom->Rndm() ));
            timeStamp = 1000000000;
            for( Int_t recLoop = 0; recLoop < nrOfRecords; recLoop ++ )
            {
               if( randomTimeStamps )
		timeStamp = (Int_t)(1200000000*(gRandom->Rndm()));
                else
		  timeStamp += (Int_t)(50*(gRandom->Rndm()) );
               dcsVal = new AliDCSValue( (Float_t)( 50 + 50*(gRandom->Rndm()) ), timeStamp );
               valueSetTL->Add(dcsVal);
            } /*for( recLoop )*/
            aliasMap->Add(new TObjString(aliasName), valueSetTL);
            created += nrOfRecords;

            sprintf(dpName,"SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_R", iLay, iLad,iMod);
            aliasName=dpName;
	    nrOfRecords = (Int_t)(maxRecords * ( gRandom->Rndm() ));
	    timeStamp = 1000000000;
            for( Int_t recLoop = 0; recLoop < nrOfRecords; recLoop ++ )
            {
               if( randomTimeStamps )
		timeStamp = (Int_t)(1200000000*(gRandom->Rndm()));
               else
		 timeStamp += (Int_t)(50*(gRandom->Rndm()) );
               dcsVal = new AliDCSValue( (Float_t)( 50 + 50*(gRandom->Rndm()) ), timeStamp );
               valueSetTR->Add(dcsVal);
            } /*for( recLoop )*/
            aliasMap->Add(new TObjString(aliasName), valueSetTR);
            created += nrOfRecords;

            sprintf(dpName,"SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_L_STATE", iLay, iLad,iMod);
            aliasName=dpName;
	    nrOfRecords = (Int_t)(maxRecords * ( gRandom->Rndm() ));
            timeStamp = 1000000000;
            for( Int_t recLoop = 0; recLoop < nrOfRecords; recLoop ++ )
            {
               if( randomTimeStamps )
		 timeStamp = (Int_t)(1200000000*(gRandom->Rndm()));
               else
		 timeStamp += (Int_t)(50*(gRandom->Rndm()) );
               if( 1000*(gRandom->Rndm()) > 50 ) 
                  dcsVal = new AliDCSValue((Int_t)1, timeStamp);
               else
                  dcsVal = new AliDCSValue((Int_t)0, timeStamp);
               valueSetStTL->Add(dcsVal);
            } /*for( recLoop )*/
            aliasMap->Add(new TObjString(aliasName), valueSetStTL);
            created += nrOfRecords;

            sprintf(dpName,"SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_R_STATE", iLay, iLad,iMod);
            aliasName=dpName;
	    nrOfRecords = (Int_t)(maxRecords * ( gRandom->Rndm() ));
            timeStamp = 1000000000;
            for( Int_t recLoop = 0; recLoop < nrOfRecords; recLoop ++ )
            {
               if( randomTimeStamps )
		timeStamp = (Int_t)(1200000000*(gRandom->Rndm()));
               else
		 timeStamp += (Int_t)(50*(gRandom->Rndm()) );
               if( 1000*(gRandom->Rndm()) > 50 ) 
                  dcsVal = new AliDCSValue((Int_t)1, timeStamp);
               else
                  dcsVal = new AliDCSValue((Int_t)0, timeStamp);
               valueSetStTR->Add(dcsVal);

            } /*for( recLoop )*/
            aliasMap->Add(new TObjString(aliasName), valueSetStTR);
            created += nrOfRecords;

         } /*for( iMod ) */
      } /*for( iLad )*/

  } /*for( iLay )*/

  fprintf(  stderr, "\nCreated %i objects of type AliDCSValue ... \n", created);

  sizeOfMapContent += created * ( sizeof( AliDCSValue ) + sizeof( AliDCSValue * ) );

  return aliasMap;
}

// -----------------------------------------------------------------------------

void GenerateOutputFiles( TMap *map, char *dir )
{

  FILE  *outputFile;
  char   buffer[100],cmd[100];
  Int_t  nHVEntries, nMVEntries, nTLEntries, nTREntries;
  Int_t  nOKEntries, nStTLEntries, nStTREntries;

  sprintf(cmd,"ls -l %s >/dev/null 2>&1",dir);
  if(gSystem->Exec(cmd)!=0){
    printf("%s --- NOT EXISTS -- create it\n",dir);
    sprintf(cmd,"mkdir %s",dir);
    gSystem->Exec(cmd);
  }

  for( Int_t iLay = 3; iLay < 5; iLay++ )
  {

     Int_t maxLad = ( iLay == 3) ? kNladders3 : kNladders4;
     Int_t maxMod = ( iLay == 3) ? kNmodLad3 : kNmodLad4;

     for(Int_t iLad = 0; iLad < maxLad; iLad++)
     {


        for(Int_t iMod = 0; iMod < maxMod; iMod++)
        {

           sprintf( buffer, "%s/DCSMapContent_SDD_LAYER%i_LADDER%02d_MODULE%d.txt", dir, iLay, iLad, iMod );

           fprintf( stderr, "Creating file %s ... ", buffer );
           outputFile = fopen( buffer, "w" );
            if( outputFile == NULL )
            {
               fprintf( stderr, "failed!\n" );
               return;
            } /*if*/
            else
             fprintf( stderr, "\n" );


           sprintf( buffer, "SDD_LAYER%i_LADDER%02d_MODULE%d_HV", iLay, iLad, iMod );
           TObjArray* arrHV = (TObjArray*) map->GetValue( buffer );
           if( arrHV == NULL ) 
           {
               fprintf( stderr, "Map record %s does not exist!\n", buffer );
               nHVEntries = 0;
           }
           else
            nHVEntries = arrHV->GetEntries();

           sprintf( buffer, "SDD_LAYER%i_LADDER%02d_MODULE%d_MV", iLay, iLad, iMod );
           TObjArray* arrMV = (TObjArray*) map->GetValue( buffer );
           if( arrMV == NULL ) 
           {
               fprintf( stderr, "Map record %s does not exist!\n", buffer );
               nMVEntries = 0;
           }
           else
            nMVEntries = arrMV->GetEntries();

           sprintf( buffer, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_L", iLay, iLad, iMod );
           TObjArray* arrTL = (TObjArray*) map->GetValue( buffer );
           if( arrTL == NULL ) 
           {
               fprintf( stderr, "Map record %s does not exist!\n", buffer );
               nTLEntries = 0;
           }
           else
            nTLEntries = arrTL->GetEntries();

           sprintf( buffer, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_R", iLay, iLad, iMod );
           TObjArray* arrTR = (TObjArray*) map->GetValue( buffer );
           if( arrTR == NULL ) 
           {
               fprintf( stderr, "Map record %s does not exist!\n", buffer );
               nTREntries = 0;
           }
           else
            nTREntries = arrTR->GetEntries();

           sprintf( buffer, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_L_STATE", iLay, iLad, iMod );
           TObjArray* arrStTL = (TObjArray*) map->GetValue( buffer );
           if( arrStTL == NULL ) 
           {
               fprintf( stderr, "Map record %s does not exist!\n", buffer );
               nStTLEntries = 0;
           }
           else
            nStTLEntries = arrStTL->GetEntries();

           sprintf( buffer, "SDD_LAYER%i_LADDER%02d_MODULE%d_TEMP_R_STATE", iLay, iLad, iMod );
           TObjArray* arrStTR = (TObjArray*) map->GetValue( buffer );
           if( arrStTR == NULL ) 
           {
               fprintf( stderr, "Map record %s does not exist!\n", buffer );
               nStTREntries = 0;
           }
           else
            nStTREntries = arrStTR->GetEntries();

           sprintf( buffer, "SDD_LAYER%i_LADDER%02d_MODULE%d_OK", iLay, iLad, iMod );
           TObjArray* arrOK = (TObjArray*) map->GetValue( buffer );
           if( arrOK == NULL ) 
           {
               fprintf( stderr, "Map record %s does not exist!\n", buffer );
               nOKEntries = 0;
           }
           else
            nOKEntries = arrOK->GetEntries();

           fprintf( outputFile, "+-----------------------------------------------------------------------");
           fprintf( outputFile, "------------------------------------------------------------------------+\n" );
           fprintf( outputFile, "|                                                DCS Map content for SDD_LAYER%i_LADDER%02d_MODULE%d" , iLay, iLad, iMod); 
           fprintf( outputFile, "                                                |\n" );
           fprintf( outputFile, "+----------------------+----------------------+---------------------+----------------------+");
           fprintf( outputFile, "-----------------+-----------------+----------------+\n" );
           fprintf( outputFile, "|    %05i  records    |    %05i  records    |    %05i  records   |    %05i  records   |  %05i records  |",
                                 nHVEntries, nMVEntries, nTLEntries, nTREntries, nStTLEntries );
           fprintf( outputFile, "  %05i records  | %05i  records  |\n", nStTREntries, nOKEntries );

           fprintf( outputFile, "|  time (s)     HV     |  time (s)      MV     |  time (s)     TL    |  time (s)     TR    | time (s)   StTL |" );
           fprintf( outputFile, " time (s)   StTR | time (s)   OK   |\n" );
           fprintf( outputFile, "+----------------------+----------------------+---------------------+---------------------+");
           fprintf( outputFile, "-----------------+-----------------+-----------------+\n" );



           Int_t a = (nHVEntries > nMVEntries ) ? nHVEntries : nMVEntries;
           Int_t b = (nTLEntries > nTREntries ) ? nTLEntries : nTREntries;
           Int_t c = (nStTLEntries > nStTREntries ) ? nStTLEntries : nStTREntries;
           if( a < b ) a = b; if( c < nOKEntries ) c = nOKEntries;
           Int_t loopMax = ( a > c ) ? a : c ;
                        // Finds maximal entry number



           for( Int_t entryLoop = 0; entryLoop < loopMax; entryLoop++ )
           {

               if( entryLoop < nHVEntries )
                fprintf( outputFile, "| %12i %4.2f | ", ((AliDCSValue*)arrHV->At(entryLoop))->GetTimeStamp(),
                                                                   ((AliDCSValue*)arrHV->At(entryLoop))->GetFloat() );
               else
                fprintf( outputFile, "|                      | ");

               if( entryLoop < nMVEntries )
               fprintf( outputFile, " %12i  %2.3f | ", ((AliDCSValue*)arrMV->At(entryLoop))->GetTimeStamp(), 
                                                                   ((AliDCSValue*)arrMV->At(entryLoop))->GetFloat() );
               else
               fprintf( outputFile, "                      | ");

               if( entryLoop < nTLEntries )
               fprintf( outputFile, "%12i  %2.2f | ", ((AliDCSValue*)arrTL->At(entryLoop))->GetTimeStamp(), 
                                                                   ((AliDCSValue*)arrTL->At(entryLoop))->GetFloat() );
               else
               fprintf( outputFile, "                    | ");

               if( entryLoop < nTREntries )
               fprintf( outputFile, "%12i  %2.2f | ", ((AliDCSValue*)arrTR->At(entryLoop))->GetTimeStamp(), 
                                                                   ((AliDCSValue*)arrTR->At(entryLoop))->GetFloat() );
               else
               fprintf( outputFile, "                    | ");

               if( entryLoop < nStTLEntries )
               fprintf( outputFile, "%12i  %i | ", ((AliDCSValue*)arrStTL->At(entryLoop))->GetTimeStamp(),
                                                                   ((AliDCSValue*)arrStTL->At(entryLoop))->GetInt() );
               else
               fprintf( outputFile, "                | ");

               if( entryLoop < nStTREntries )
               fprintf( outputFile, "%12i  %i | ",  ((AliDCSValue*)arrStTR->At(entryLoop))->GetTimeStamp(),
                                                                   ((AliDCSValue*)arrStTR->At(entryLoop))->GetInt() );
               else
               fprintf( outputFile, "                | ");

               if( entryLoop < nOKEntries )
               fprintf( outputFile, "%12i  %i |\n",  ((AliDCSValue*)arrOK->At(entryLoop))->GetTimeStamp(), 
                                                                    ((AliDCSValue*)arrOK->At(entryLoop))->GetBool() );
               else
               fprintf( outputFile, "                |\n");

           } /*for( entryLoop )*/

           fclose( outputFile );


        } /*for(iMod)*/


     } /*for(iLad)*/
   } /*for(iLay)*/


} /*GenerateOutputFiles*/
 CreateSDDDCSMap.C:1
 CreateSDDDCSMap.C:2
 CreateSDDDCSMap.C:3
 CreateSDDDCSMap.C:4
 CreateSDDDCSMap.C:5
 CreateSDDDCSMap.C:6
 CreateSDDDCSMap.C:7
 CreateSDDDCSMap.C:8
 CreateSDDDCSMap.C:9
 CreateSDDDCSMap.C:10
 CreateSDDDCSMap.C:11
 CreateSDDDCSMap.C:12
 CreateSDDDCSMap.C:13
 CreateSDDDCSMap.C:14
 CreateSDDDCSMap.C:15
 CreateSDDDCSMap.C:16
 CreateSDDDCSMap.C:17
 CreateSDDDCSMap.C:18
 CreateSDDDCSMap.C:19
 CreateSDDDCSMap.C:20
 CreateSDDDCSMap.C:21
 CreateSDDDCSMap.C:22
 CreateSDDDCSMap.C:23
 CreateSDDDCSMap.C:24
 CreateSDDDCSMap.C:25
 CreateSDDDCSMap.C:26
 CreateSDDDCSMap.C:27
 CreateSDDDCSMap.C:28
 CreateSDDDCSMap.C:29
 CreateSDDDCSMap.C:30
 CreateSDDDCSMap.C:31
 CreateSDDDCSMap.C:32
 CreateSDDDCSMap.C:33
 CreateSDDDCSMap.C:34
 CreateSDDDCSMap.C:35
 CreateSDDDCSMap.C:36
 CreateSDDDCSMap.C:37
 CreateSDDDCSMap.C:38
 CreateSDDDCSMap.C:39
 CreateSDDDCSMap.C:40
 CreateSDDDCSMap.C:41
 CreateSDDDCSMap.C:42
 CreateSDDDCSMap.C:43
 CreateSDDDCSMap.C:44
 CreateSDDDCSMap.C:45
 CreateSDDDCSMap.C:46
 CreateSDDDCSMap.C:47
 CreateSDDDCSMap.C:48
 CreateSDDDCSMap.C:49
 CreateSDDDCSMap.C:50
 CreateSDDDCSMap.C:51
 CreateSDDDCSMap.C:52
 CreateSDDDCSMap.C:53
 CreateSDDDCSMap.C:54
 CreateSDDDCSMap.C:55
 CreateSDDDCSMap.C:56
 CreateSDDDCSMap.C:57
 CreateSDDDCSMap.C:58
 CreateSDDDCSMap.C:59
 CreateSDDDCSMap.C:60
 CreateSDDDCSMap.C:61
 CreateSDDDCSMap.C:62
 CreateSDDDCSMap.C:63
 CreateSDDDCSMap.C:64
 CreateSDDDCSMap.C:65
 CreateSDDDCSMap.C:66
 CreateSDDDCSMap.C:67
 CreateSDDDCSMap.C:68
 CreateSDDDCSMap.C:69
 CreateSDDDCSMap.C:70
 CreateSDDDCSMap.C:71
 CreateSDDDCSMap.C:72
 CreateSDDDCSMap.C:73
 CreateSDDDCSMap.C:74
 CreateSDDDCSMap.C:75
 CreateSDDDCSMap.C:76
 CreateSDDDCSMap.C:77
 CreateSDDDCSMap.C:78
 CreateSDDDCSMap.C:79
 CreateSDDDCSMap.C:80
 CreateSDDDCSMap.C:81
 CreateSDDDCSMap.C:82
 CreateSDDDCSMap.C:83
 CreateSDDDCSMap.C:84
 CreateSDDDCSMap.C:85
 CreateSDDDCSMap.C:86
 CreateSDDDCSMap.C:87
 CreateSDDDCSMap.C:88
 CreateSDDDCSMap.C:89
 CreateSDDDCSMap.C:90
 CreateSDDDCSMap.C:91
 CreateSDDDCSMap.C:92
 CreateSDDDCSMap.C:93
 CreateSDDDCSMap.C:94
 CreateSDDDCSMap.C:95
 CreateSDDDCSMap.C:96
 CreateSDDDCSMap.C:97
 CreateSDDDCSMap.C:98
 CreateSDDDCSMap.C:99
 CreateSDDDCSMap.C:100
 CreateSDDDCSMap.C:101
 CreateSDDDCSMap.C:102
 CreateSDDDCSMap.C:103
 CreateSDDDCSMap.C:104
 CreateSDDDCSMap.C:105
 CreateSDDDCSMap.C:106
 CreateSDDDCSMap.C:107
 CreateSDDDCSMap.C:108
 CreateSDDDCSMap.C:109
 CreateSDDDCSMap.C:110
 CreateSDDDCSMap.C:111
 CreateSDDDCSMap.C:112
 CreateSDDDCSMap.C:113
 CreateSDDDCSMap.C:114
 CreateSDDDCSMap.C:115
 CreateSDDDCSMap.C:116
 CreateSDDDCSMap.C:117
 CreateSDDDCSMap.C:118
 CreateSDDDCSMap.C:119
 CreateSDDDCSMap.C:120
 CreateSDDDCSMap.C:121
 CreateSDDDCSMap.C:122
 CreateSDDDCSMap.C:123
 CreateSDDDCSMap.C:124
 CreateSDDDCSMap.C:125
 CreateSDDDCSMap.C:126
 CreateSDDDCSMap.C:127
 CreateSDDDCSMap.C:128
 CreateSDDDCSMap.C:129
 CreateSDDDCSMap.C:130
 CreateSDDDCSMap.C:131
 CreateSDDDCSMap.C:132
 CreateSDDDCSMap.C:133
 CreateSDDDCSMap.C:134
 CreateSDDDCSMap.C:135
 CreateSDDDCSMap.C:136
 CreateSDDDCSMap.C:137
 CreateSDDDCSMap.C:138
 CreateSDDDCSMap.C:139
 CreateSDDDCSMap.C:140
 CreateSDDDCSMap.C:141
 CreateSDDDCSMap.C:142
 CreateSDDDCSMap.C:143
 CreateSDDDCSMap.C:144
 CreateSDDDCSMap.C:145
 CreateSDDDCSMap.C:146
 CreateSDDDCSMap.C:147
 CreateSDDDCSMap.C:148
 CreateSDDDCSMap.C:149
 CreateSDDDCSMap.C:150
 CreateSDDDCSMap.C:151
 CreateSDDDCSMap.C:152
 CreateSDDDCSMap.C:153
 CreateSDDDCSMap.C:154
 CreateSDDDCSMap.C:155
 CreateSDDDCSMap.C:156
 CreateSDDDCSMap.C:157
 CreateSDDDCSMap.C:158
 CreateSDDDCSMap.C:159
 CreateSDDDCSMap.C:160
 CreateSDDDCSMap.C:161
 CreateSDDDCSMap.C:162
 CreateSDDDCSMap.C:163
 CreateSDDDCSMap.C:164
 CreateSDDDCSMap.C:165
 CreateSDDDCSMap.C:166
 CreateSDDDCSMap.C:167
 CreateSDDDCSMap.C:168
 CreateSDDDCSMap.C:169
 CreateSDDDCSMap.C:170
 CreateSDDDCSMap.C:171
 CreateSDDDCSMap.C:172
 CreateSDDDCSMap.C:173
 CreateSDDDCSMap.C:174
 CreateSDDDCSMap.C:175
 CreateSDDDCSMap.C:176
 CreateSDDDCSMap.C:177
 CreateSDDDCSMap.C:178
 CreateSDDDCSMap.C:179
 CreateSDDDCSMap.C:180
 CreateSDDDCSMap.C:181
 CreateSDDDCSMap.C:182
 CreateSDDDCSMap.C:183
 CreateSDDDCSMap.C:184
 CreateSDDDCSMap.C:185
 CreateSDDDCSMap.C:186
 CreateSDDDCSMap.C:187
 CreateSDDDCSMap.C:188
 CreateSDDDCSMap.C:189
 CreateSDDDCSMap.C:190
 CreateSDDDCSMap.C:191
 CreateSDDDCSMap.C:192
 CreateSDDDCSMap.C:193
 CreateSDDDCSMap.C:194
 CreateSDDDCSMap.C:195
 CreateSDDDCSMap.C:196
 CreateSDDDCSMap.C:197
 CreateSDDDCSMap.C:198
 CreateSDDDCSMap.C:199
 CreateSDDDCSMap.C:200
 CreateSDDDCSMap.C:201
 CreateSDDDCSMap.C:202
 CreateSDDDCSMap.C:203
 CreateSDDDCSMap.C:204
 CreateSDDDCSMap.C:205
 CreateSDDDCSMap.C:206
 CreateSDDDCSMap.C:207
 CreateSDDDCSMap.C:208
 CreateSDDDCSMap.C:209
 CreateSDDDCSMap.C:210
 CreateSDDDCSMap.C:211
 CreateSDDDCSMap.C:212
 CreateSDDDCSMap.C:213
 CreateSDDDCSMap.C:214
 CreateSDDDCSMap.C:215
 CreateSDDDCSMap.C:216
 CreateSDDDCSMap.C:217
 CreateSDDDCSMap.C:218
 CreateSDDDCSMap.C:219
 CreateSDDDCSMap.C:220
 CreateSDDDCSMap.C:221
 CreateSDDDCSMap.C:222
 CreateSDDDCSMap.C:223
 CreateSDDDCSMap.C:224
 CreateSDDDCSMap.C:225
 CreateSDDDCSMap.C:226
 CreateSDDDCSMap.C:227
 CreateSDDDCSMap.C:228
 CreateSDDDCSMap.C:229
 CreateSDDDCSMap.C:230
 CreateSDDDCSMap.C:231
 CreateSDDDCSMap.C:232
 CreateSDDDCSMap.C:233
 CreateSDDDCSMap.C:234
 CreateSDDDCSMap.C:235
 CreateSDDDCSMap.C:236
 CreateSDDDCSMap.C:237
 CreateSDDDCSMap.C:238
 CreateSDDDCSMap.C:239
 CreateSDDDCSMap.C:240
 CreateSDDDCSMap.C:241
 CreateSDDDCSMap.C:242
 CreateSDDDCSMap.C:243
 CreateSDDDCSMap.C:244
 CreateSDDDCSMap.C:245
 CreateSDDDCSMap.C:246
 CreateSDDDCSMap.C:247
 CreateSDDDCSMap.C:248
 CreateSDDDCSMap.C:249
 CreateSDDDCSMap.C:250
 CreateSDDDCSMap.C:251
 CreateSDDDCSMap.C:252
 CreateSDDDCSMap.C:253
 CreateSDDDCSMap.C:254
 CreateSDDDCSMap.C:255
 CreateSDDDCSMap.C:256
 CreateSDDDCSMap.C:257
 CreateSDDDCSMap.C:258
 CreateSDDDCSMap.C:259
 CreateSDDDCSMap.C:260
 CreateSDDDCSMap.C:261
 CreateSDDDCSMap.C:262
 CreateSDDDCSMap.C:263
 CreateSDDDCSMap.C:264
 CreateSDDDCSMap.C:265
 CreateSDDDCSMap.C:266
 CreateSDDDCSMap.C:267
 CreateSDDDCSMap.C:268
 CreateSDDDCSMap.C:269
 CreateSDDDCSMap.C:270
 CreateSDDDCSMap.C:271
 CreateSDDDCSMap.C:272
 CreateSDDDCSMap.C:273
 CreateSDDDCSMap.C:274
 CreateSDDDCSMap.C:275
 CreateSDDDCSMap.C:276
 CreateSDDDCSMap.C:277
 CreateSDDDCSMap.C:278
 CreateSDDDCSMap.C:279
 CreateSDDDCSMap.C:280
 CreateSDDDCSMap.C:281
 CreateSDDDCSMap.C:282
 CreateSDDDCSMap.C:283
 CreateSDDDCSMap.C:284
 CreateSDDDCSMap.C:285
 CreateSDDDCSMap.C:286
 CreateSDDDCSMap.C:287
 CreateSDDDCSMap.C:288
 CreateSDDDCSMap.C:289
 CreateSDDDCSMap.C:290
 CreateSDDDCSMap.C:291
 CreateSDDDCSMap.C:292
 CreateSDDDCSMap.C:293
 CreateSDDDCSMap.C:294
 CreateSDDDCSMap.C:295
 CreateSDDDCSMap.C:296
 CreateSDDDCSMap.C:297
 CreateSDDDCSMap.C:298
 CreateSDDDCSMap.C:299
 CreateSDDDCSMap.C:300
 CreateSDDDCSMap.C:301
 CreateSDDDCSMap.C:302
 CreateSDDDCSMap.C:303
 CreateSDDDCSMap.C:304
 CreateSDDDCSMap.C:305
 CreateSDDDCSMap.C:306
 CreateSDDDCSMap.C:307
 CreateSDDDCSMap.C:308
 CreateSDDDCSMap.C:309
 CreateSDDDCSMap.C:310
 CreateSDDDCSMap.C:311
 CreateSDDDCSMap.C:312
 CreateSDDDCSMap.C:313
 CreateSDDDCSMap.C:314
 CreateSDDDCSMap.C:315
 CreateSDDDCSMap.C:316
 CreateSDDDCSMap.C:317
 CreateSDDDCSMap.C:318
 CreateSDDDCSMap.C:319
 CreateSDDDCSMap.C:320
 CreateSDDDCSMap.C:321
 CreateSDDDCSMap.C:322
 CreateSDDDCSMap.C:323
 CreateSDDDCSMap.C:324
 CreateSDDDCSMap.C:325
 CreateSDDDCSMap.C:326
 CreateSDDDCSMap.C:327
 CreateSDDDCSMap.C:328
 CreateSDDDCSMap.C:329
 CreateSDDDCSMap.C:330
 CreateSDDDCSMap.C:331
 CreateSDDDCSMap.C:332
 CreateSDDDCSMap.C:333
 CreateSDDDCSMap.C:334
 CreateSDDDCSMap.C:335
 CreateSDDDCSMap.C:336
 CreateSDDDCSMap.C:337
 CreateSDDDCSMap.C:338
 CreateSDDDCSMap.C:339
 CreateSDDDCSMap.C:340
 CreateSDDDCSMap.C:341
 CreateSDDDCSMap.C:342
 CreateSDDDCSMap.C:343
 CreateSDDDCSMap.C:344
 CreateSDDDCSMap.C:345
 CreateSDDDCSMap.C:346
 CreateSDDDCSMap.C:347
 CreateSDDDCSMap.C:348
 CreateSDDDCSMap.C:349
 CreateSDDDCSMap.C:350
 CreateSDDDCSMap.C:351
 CreateSDDDCSMap.C:352
 CreateSDDDCSMap.C:353
 CreateSDDDCSMap.C:354
 CreateSDDDCSMap.C:355
 CreateSDDDCSMap.C:356
 CreateSDDDCSMap.C:357
 CreateSDDDCSMap.C:358
 CreateSDDDCSMap.C:359
 CreateSDDDCSMap.C:360
 CreateSDDDCSMap.C:361
 CreateSDDDCSMap.C:362
 CreateSDDDCSMap.C:363
 CreateSDDDCSMap.C:364
 CreateSDDDCSMap.C:365
 CreateSDDDCSMap.C:366
 CreateSDDDCSMap.C:367
 CreateSDDDCSMap.C:368
 CreateSDDDCSMap.C:369
 CreateSDDDCSMap.C:370
 CreateSDDDCSMap.C:371
 CreateSDDDCSMap.C:372
 CreateSDDDCSMap.C:373
 CreateSDDDCSMap.C:374
 CreateSDDDCSMap.C:375
 CreateSDDDCSMap.C:376
 CreateSDDDCSMap.C:377
 CreateSDDDCSMap.C:378
 CreateSDDDCSMap.C:379
 CreateSDDDCSMap.C:380
 CreateSDDDCSMap.C:381
 CreateSDDDCSMap.C:382
 CreateSDDDCSMap.C:383
 CreateSDDDCSMap.C:384
 CreateSDDDCSMap.C:385
 CreateSDDDCSMap.C:386
 CreateSDDDCSMap.C:387
 CreateSDDDCSMap.C:388
 CreateSDDDCSMap.C:389
 CreateSDDDCSMap.C:390
 CreateSDDDCSMap.C:391
 CreateSDDDCSMap.C:392
 CreateSDDDCSMap.C:393
 CreateSDDDCSMap.C:394
 CreateSDDDCSMap.C:395
 CreateSDDDCSMap.C:396
 CreateSDDDCSMap.C:397
 CreateSDDDCSMap.C:398
 CreateSDDDCSMap.C:399
 CreateSDDDCSMap.C:400
 CreateSDDDCSMap.C:401
 CreateSDDDCSMap.C:402
 CreateSDDDCSMap.C:403
 CreateSDDDCSMap.C:404
 CreateSDDDCSMap.C:405
 CreateSDDDCSMap.C:406
 CreateSDDDCSMap.C:407
 CreateSDDDCSMap.C:408
 CreateSDDDCSMap.C:409
 CreateSDDDCSMap.C:410
 CreateSDDDCSMap.C:411
 CreateSDDDCSMap.C:412
 CreateSDDDCSMap.C:413
 CreateSDDDCSMap.C:414
 CreateSDDDCSMap.C:415
 CreateSDDDCSMap.C:416
 CreateSDDDCSMap.C:417
 CreateSDDDCSMap.C:418
 CreateSDDDCSMap.C:419
 CreateSDDDCSMap.C:420
 CreateSDDDCSMap.C:421
 CreateSDDDCSMap.C:422
 CreateSDDDCSMap.C:423
 CreateSDDDCSMap.C:424
 CreateSDDDCSMap.C:425
 CreateSDDDCSMap.C:426
 CreateSDDDCSMap.C:427
 CreateSDDDCSMap.C:428
 CreateSDDDCSMap.C:429
 CreateSDDDCSMap.C:430
 CreateSDDDCSMap.C:431
 CreateSDDDCSMap.C:432
 CreateSDDDCSMap.C:433
 CreateSDDDCSMap.C:434
 CreateSDDDCSMap.C:435
 CreateSDDDCSMap.C:436
 CreateSDDDCSMap.C:437
 CreateSDDDCSMap.C:438
 CreateSDDDCSMap.C:439
 CreateSDDDCSMap.C:440
 CreateSDDDCSMap.C:441
 CreateSDDDCSMap.C:442
 CreateSDDDCSMap.C:443
 CreateSDDDCSMap.C:444
 CreateSDDDCSMap.C:445
 CreateSDDDCSMap.C:446
 CreateSDDDCSMap.C:447
 CreateSDDDCSMap.C:448
 CreateSDDDCSMap.C:449
 CreateSDDDCSMap.C:450
 CreateSDDDCSMap.C:451
 CreateSDDDCSMap.C:452
 CreateSDDDCSMap.C:453
 CreateSDDDCSMap.C:454
 CreateSDDDCSMap.C:455
 CreateSDDDCSMap.C:456
 CreateSDDDCSMap.C:457
 CreateSDDDCSMap.C:458
 CreateSDDDCSMap.C:459
 CreateSDDDCSMap.C:460
 CreateSDDDCSMap.C:461
 CreateSDDDCSMap.C:462
 CreateSDDDCSMap.C:463
 CreateSDDDCSMap.C:464
 CreateSDDDCSMap.C:465
 CreateSDDDCSMap.C:466
 CreateSDDDCSMap.C:467
 CreateSDDDCSMap.C:468
 CreateSDDDCSMap.C:469
 CreateSDDDCSMap.C:470
 CreateSDDDCSMap.C:471
 CreateSDDDCSMap.C:472
 CreateSDDDCSMap.C:473
 CreateSDDDCSMap.C:474
 CreateSDDDCSMap.C:475
 CreateSDDDCSMap.C:476
 CreateSDDDCSMap.C:477
 CreateSDDDCSMap.C:478
 CreateSDDDCSMap.C:479
 CreateSDDDCSMap.C:480
 CreateSDDDCSMap.C:481
 CreateSDDDCSMap.C:482
 CreateSDDDCSMap.C:483
 CreateSDDDCSMap.C:484
 CreateSDDDCSMap.C:485
 CreateSDDDCSMap.C:486
 CreateSDDDCSMap.C:487
 CreateSDDDCSMap.C:488
 CreateSDDDCSMap.C:489
 CreateSDDDCSMap.C:490
 CreateSDDDCSMap.C:491
 CreateSDDDCSMap.C:492
 CreateSDDDCSMap.C:493
 CreateSDDDCSMap.C:494
 CreateSDDDCSMap.C:495
 CreateSDDDCSMap.C:496
 CreateSDDDCSMap.C:497
 CreateSDDDCSMap.C:498
 CreateSDDDCSMap.C:499
 CreateSDDDCSMap.C:500
 CreateSDDDCSMap.C:501
 CreateSDDDCSMap.C:502
 CreateSDDDCSMap.C:503
 CreateSDDDCSMap.C:504
 CreateSDDDCSMap.C:505
 CreateSDDDCSMap.C:506
 CreateSDDDCSMap.C:507
 CreateSDDDCSMap.C:508
 CreateSDDDCSMap.C:509
 CreateSDDDCSMap.C:510
 CreateSDDDCSMap.C:511
 CreateSDDDCSMap.C:512
 CreateSDDDCSMap.C:513
 CreateSDDDCSMap.C:514
 CreateSDDDCSMap.C:515
 CreateSDDDCSMap.C:516
 CreateSDDDCSMap.C:517
 CreateSDDDCSMap.C:518
 CreateSDDDCSMap.C:519
 CreateSDDDCSMap.C:520
 CreateSDDDCSMap.C:521
 CreateSDDDCSMap.C:522
 CreateSDDDCSMap.C:523
 CreateSDDDCSMap.C:524
 CreateSDDDCSMap.C:525
 CreateSDDDCSMap.C:526
 CreateSDDDCSMap.C:527
 CreateSDDDCSMap.C:528
 CreateSDDDCSMap.C:529
 CreateSDDDCSMap.C:530
 CreateSDDDCSMap.C:531
 CreateSDDDCSMap.C:532
 CreateSDDDCSMap.C:533
 CreateSDDDCSMap.C:534
 CreateSDDDCSMap.C:535
 CreateSDDDCSMap.C:536
 CreateSDDDCSMap.C:537
 CreateSDDDCSMap.C:538
 CreateSDDDCSMap.C:539
 CreateSDDDCSMap.C:540
 CreateSDDDCSMap.C:541
 CreateSDDDCSMap.C:542
 CreateSDDDCSMap.C:543
 CreateSDDDCSMap.C:544
 CreateSDDDCSMap.C:545
 CreateSDDDCSMap.C:546
 CreateSDDDCSMap.C:547
 CreateSDDDCSMap.C:548
 CreateSDDDCSMap.C:549
 CreateSDDDCSMap.C:550
 CreateSDDDCSMap.C:551
 CreateSDDDCSMap.C:552
 CreateSDDDCSMap.C:553
 CreateSDDDCSMap.C:554
 CreateSDDDCSMap.C:555
 CreateSDDDCSMap.C:556
 CreateSDDDCSMap.C:557
 CreateSDDDCSMap.C:558
 CreateSDDDCSMap.C:559
 CreateSDDDCSMap.C:560
 CreateSDDDCSMap.C:561
 CreateSDDDCSMap.C:562
 CreateSDDDCSMap.C:563
 CreateSDDDCSMap.C:564
 CreateSDDDCSMap.C:565
 CreateSDDDCSMap.C:566
 CreateSDDDCSMap.C:567
 CreateSDDDCSMap.C:568
 CreateSDDDCSMap.C:569
 CreateSDDDCSMap.C:570
 CreateSDDDCSMap.C:571
 CreateSDDDCSMap.C:572
 CreateSDDDCSMap.C:573
 CreateSDDDCSMap.C:574
 CreateSDDDCSMap.C:575
 CreateSDDDCSMap.C:576
 CreateSDDDCSMap.C:577
 CreateSDDDCSMap.C:578
 CreateSDDDCSMap.C:579
 CreateSDDDCSMap.C:580
 CreateSDDDCSMap.C:581
 CreateSDDDCSMap.C:582
 CreateSDDDCSMap.C:583
 CreateSDDDCSMap.C:584
 CreateSDDDCSMap.C:585
 CreateSDDDCSMap.C:586
 CreateSDDDCSMap.C:587
 CreateSDDDCSMap.C:588
 CreateSDDDCSMap.C:589
 CreateSDDDCSMap.C:590
 CreateSDDDCSMap.C:591
 CreateSDDDCSMap.C:592
 CreateSDDDCSMap.C:593
 CreateSDDDCSMap.C:594
 CreateSDDDCSMap.C:595
 CreateSDDDCSMap.C:596
 CreateSDDDCSMap.C:597
 CreateSDDDCSMap.C:598
 CreateSDDDCSMap.C:599
 CreateSDDDCSMap.C:600
 CreateSDDDCSMap.C:601
 CreateSDDDCSMap.C:602
 CreateSDDDCSMap.C:603
 CreateSDDDCSMap.C:604
 CreateSDDDCSMap.C:605
 CreateSDDDCSMap.C:606
 CreateSDDDCSMap.C:607
 CreateSDDDCSMap.C:608
 CreateSDDDCSMap.C:609
 CreateSDDDCSMap.C:610
 CreateSDDDCSMap.C:611
 CreateSDDDCSMap.C:612
 CreateSDDDCSMap.C:613
 CreateSDDDCSMap.C:614
 CreateSDDDCSMap.C:615
 CreateSDDDCSMap.C:616
 CreateSDDDCSMap.C:617
 CreateSDDDCSMap.C:618
 CreateSDDDCSMap.C:619
 CreateSDDDCSMap.C:620
 CreateSDDDCSMap.C:621
 CreateSDDDCSMap.C:622
 CreateSDDDCSMap.C:623
 CreateSDDDCSMap.C:624
 CreateSDDDCSMap.C:625
 CreateSDDDCSMap.C:626
 CreateSDDDCSMap.C:627
 CreateSDDDCSMap.C:628
 CreateSDDDCSMap.C:629
 CreateSDDDCSMap.C:630
 CreateSDDDCSMap.C:631
 CreateSDDDCSMap.C:632
 CreateSDDDCSMap.C:633
 CreateSDDDCSMap.C:634
 CreateSDDDCSMap.C:635
 CreateSDDDCSMap.C:636
 CreateSDDDCSMap.C:637
 CreateSDDDCSMap.C:638
 CreateSDDDCSMap.C:639
 CreateSDDDCSMap.C:640
 CreateSDDDCSMap.C:641
 CreateSDDDCSMap.C:642
 CreateSDDDCSMap.C:643
 CreateSDDDCSMap.C:644
 CreateSDDDCSMap.C:645
 CreateSDDDCSMap.C:646
 CreateSDDDCSMap.C:647
 CreateSDDDCSMap.C:648
 CreateSDDDCSMap.C:649
 CreateSDDDCSMap.C:650
 CreateSDDDCSMap.C:651
 CreateSDDDCSMap.C:652
 CreateSDDDCSMap.C:653
 CreateSDDDCSMap.C:654
 CreateSDDDCSMap.C:655
 CreateSDDDCSMap.C:656
 CreateSDDDCSMap.C:657
 CreateSDDDCSMap.C:658
 CreateSDDDCSMap.C:659
 CreateSDDDCSMap.C:660
 CreateSDDDCSMap.C:661
 CreateSDDDCSMap.C:662
 CreateSDDDCSMap.C:663
 CreateSDDDCSMap.C:664
 CreateSDDDCSMap.C:665
 CreateSDDDCSMap.C:666
 CreateSDDDCSMap.C:667
 CreateSDDDCSMap.C:668
 CreateSDDDCSMap.C:669
 CreateSDDDCSMap.C:670
 CreateSDDDCSMap.C:671
 CreateSDDDCSMap.C:672
 CreateSDDDCSMap.C:673
 CreateSDDDCSMap.C:674
 CreateSDDDCSMap.C:675
 CreateSDDDCSMap.C:676
 CreateSDDDCSMap.C:677
 CreateSDDDCSMap.C:678
 CreateSDDDCSMap.C:679
 CreateSDDDCSMap.C:680
 CreateSDDDCSMap.C:681
 CreateSDDDCSMap.C:682
 CreateSDDDCSMap.C:683
 CreateSDDDCSMap.C:684
 CreateSDDDCSMap.C:685
 CreateSDDDCSMap.C:686
 CreateSDDDCSMap.C:687
 CreateSDDDCSMap.C:688
 CreateSDDDCSMap.C:689
 CreateSDDDCSMap.C:690
 CreateSDDDCSMap.C:691
 CreateSDDDCSMap.C:692
 CreateSDDDCSMap.C:693
 CreateSDDDCSMap.C:694
 CreateSDDDCSMap.C:695
 CreateSDDDCSMap.C:696
 CreateSDDDCSMap.C:697
 CreateSDDDCSMap.C:698
 CreateSDDDCSMap.C:699
 CreateSDDDCSMap.C:700
 CreateSDDDCSMap.C:701
 CreateSDDDCSMap.C:702
 CreateSDDDCSMap.C:703
 CreateSDDDCSMap.C:704
 CreateSDDDCSMap.C:705
 CreateSDDDCSMap.C:706
 CreateSDDDCSMap.C:707
 CreateSDDDCSMap.C:708
 CreateSDDDCSMap.C:709
 CreateSDDDCSMap.C:710
 CreateSDDDCSMap.C:711
 CreateSDDDCSMap.C:712
 CreateSDDDCSMap.C:713
 CreateSDDDCSMap.C:714
 CreateSDDDCSMap.C:715
 CreateSDDDCSMap.C:716
 CreateSDDDCSMap.C:717
 CreateSDDDCSMap.C:718
 CreateSDDDCSMap.C:719
 CreateSDDDCSMap.C:720
 CreateSDDDCSMap.C:721
 CreateSDDDCSMap.C:722
 CreateSDDDCSMap.C:723
 CreateSDDDCSMap.C:724
 CreateSDDDCSMap.C:725
 CreateSDDDCSMap.C:726
 CreateSDDDCSMap.C:727
 CreateSDDDCSMap.C:728
 CreateSDDDCSMap.C:729
 CreateSDDDCSMap.C:730
 CreateSDDDCSMap.C:731
 CreateSDDDCSMap.C:732
 CreateSDDDCSMap.C:733
 CreateSDDDCSMap.C:734
 CreateSDDDCSMap.C:735
 CreateSDDDCSMap.C:736
 CreateSDDDCSMap.C:737
 CreateSDDDCSMap.C:738
 CreateSDDDCSMap.C:739
 CreateSDDDCSMap.C:740
 CreateSDDDCSMap.C:741
 CreateSDDDCSMap.C:742
 CreateSDDDCSMap.C:743
 CreateSDDDCSMap.C:744
 CreateSDDDCSMap.C:745
 CreateSDDDCSMap.C:746
 CreateSDDDCSMap.C:747
 CreateSDDDCSMap.C:748
 CreateSDDDCSMap.C:749
 CreateSDDDCSMap.C:750
 CreateSDDDCSMap.C:751