ROOT logo
//
// Configuration for ITS Upgrade TDR simulations
//
// 1 PbPb HIJING event 5.5 TeV with b<5 fm (0-10%)
// + 
// N (60) PYTHIA pp 5.5 TeV Perugia0
// 16% ccbar pair per event
//     at least one in |y|<1.5
//     D mesons decay hadronically
// 16% bbbar pair per event
//     at least one in |y|<1.5
//     D mesons decay hadronically
// 16% ccbar pair per event
//     decays not forced
//     at least one electron from charm in |y|<1.2
// 16% bbbar pair per event
//     decays not forced
//     at least one electron from charm or beauty in |y|<1.2
//  16% J/psi(|y|<1.0)->e+e-
//  20% B(|y|<2.0)->J/psi(|y|<2.0)->e+e-
// +
// 10 per event per type of 
//   Ds->KKpi,D+->Kpipi,B+->D0pi,B0->D*pi,Lc->pKpi,Lb->Lc+X(or +pi), Xi_c  
// +
// 30 per event per type of the three hypernuclei LH3, LH4, LHe4
//
// One can use the configuration macro in compiled mode by
// root [0] gSystem->Load("libgeant321");
// root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\
//                   -I$ALICE_ROOT -I$ALICE/geant3/TGeant3");
// root [0] .x grun.C(1,"Config.C++")
//
//
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TRandom.h>
#include <TDatime.h>
#include <TSystem.h>
#include <TVirtualMC.h>
#include <TGeant3TGeo.h>
#include "STEER/AliRunLoader.h"
#include "STEER/AliRun.h"
#include "STEER/AliConfig.h"
#include "PYTHIA6/AliDecayerPythia.h"
#include "PYTHIA6/AliGenPythia.h"
#include "TDPMjet/AliGenDPMjet.h"
#include "STEER/AliMagFCheb.h"
#include "STRUCT/AliBODY.h"
#include "STRUCT/AliMAG.h"
#include "STRUCT/AliABSOv3.h"
#include "STRUCT/AliDIPOv3.h"
#include "STRUCT/AliHALLv3.h"
#include "STRUCT/AliFRAMEv2.h"
#include "STRUCT/AliSHILv3.h"
#include "STRUCT/AliPIPEv3.h"
#include "ITS/AliITSv11.h"
#include "ITS/UPGRADE/AliITSUv0.h"
#include "TPC/AliTPCv2.h"
#include "TOF/AliTOFv6T0.h"
#include "HMPID/AliHMPIDv3.h"
#include "ZDC/AliZDCv3.h"
#include "TRD/AliTRDv1.h"
#include "TRD/AliTRDgeometry.h"
#include "FMD/AliFMDv1.h"
#include "MUON/AliMUONv1.h"
#include "PHOS/AliPHOSv1.h"
#include "PHOS/AliPHOSSimParam.h"
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv2.h"
#include "ACORDE/AliACORDEv1.h"
#include "VZERO/AliVZEROv7.h"
//
//#include "ITS/UPGRADE/AliITSUv11.h"

#endif


enum PDC06Proc_t 
{
  kPythia6, kPythia6D6T, kPythia6ATLAS, kPythia6ATLAS_Flat, kPythiaPerugia0, kPhojet, kPythiaPerugia0chadr, kPythiaPerugia0bchadr, kPythiaPerugia0cele, kPythiaPerugia0bele, kPythiaPerugia0Jpsi2e, kPythiaPerugia0BtoJpsi2e, kHijing, kHijing2500, kHijing2500HF, kHydjet, kDpmjet, kAmptHF, kAmpt, kRunMax
};

const char * pprRunName[] = {
  "kPythia6", "kPythia6D6T", "kPythia6ATLAS", "kPythia6ATLAS_Flat", "kPythiaPerugia0", "kPhojet",  "kPythiaPerugia0chadr", "kPythiaPerugia0bchadr", "kPythiaPerugia0cele", "kPythiaPerugia0bele", "kPythiaPerugia0Jpsi2e", "kPythiaPerugia0BtoJpsi2e", "kHijing", "kHijing2500", "kHijing2500HF", "kHydjet", "kDpmjet", "kAmptHF", "kAmpt"
};

enum Mag_t
{
  kNoField, k5kG, kFieldMax
};

const char * pprField[] = {
  "kNoField", "k5kG"
};

enum PprTrigConf_t
{
    kDefaultPPTrig, kDefaultPbPbTrig
};

const char * pprTrigConfName[] = {
    "p-p","Pb-Pb"
};

/*
enum AliITSUModel_t {
 kModelDummy,
 kModel0,
 kModel1,
 kModel21,
 kModel22  
};
//
void CreateITSU();
void CreateITSUdetailed();
void CreateITSUJune3();
*/

//--- Functions ---
class AliGenPythia;
//
AliGenerator *MbPythia();
AliGenerator *MbPythiaTuneD6T();
AliGenerator *MbPhojet();
AliGenerator *Hijing();
AliGenerator *Hijing2500();
AliGenerator *Hijing2500HF(Int_t typeHF);
AliGenerator *Hydjet();
AliGenerator *Dpmjet();
AliGenerator *Ampt();

void ProcessEnvironmentVars();

// Geterator, field, beam energy
static PDC06Proc_t   proc     = kHijing2500HF;
static Mag_t         mag      = k5kG;
static Float_t       energy   = 5500.; // energy in CMS
static Float_t       bMin     = 0.;
static Float_t       bMax =   = 5.; // 0-5 fm corresponds to around 0-10% (see https://twiki.cern.ch/twiki/bin/viewauth/ALICE/CentStudies#Tables_with_centrality_bins_for)
static PprTrigConf_t strig = kDefaultPbPbTrig; // default pp trigger configuration
static Double_t      JpsiPol  = 0; // Jpsi polarisation
static Bool_t        JpsiHarderPt = kFALSE; // Jpsi harder pt spectrum (8.8 TeV)
//========================//
// Set Random Number seed //
//========================//
TDatime dt;
static UInt_t seed    = dt.Get();

// Comment line
static TString comment;

void Config()
{
  // Get settings from environment variables
  ProcessEnvironmentVars();

  gRandom->SetSeed(seed);
  cerr<<"Seed for random number generation= "<<seed<<endl; 
  gSystem->Load("libITSUpgradeBase.so");
  gSystem->Load("libITSUpgradeSim.so");
  gSystem->Load("libEVGEN");
  // Libraries required by geant321
#if defined(__CINT__)
  gSystem->Load("liblhapdf");      // Parton density functions
  gSystem->Load("libEGPythia6");   // TGenerator interface
  if (proc == kPythia6 || proc == kPhojet || proc == kDpmjet) {
    gSystem->Load("libpythia6");        // Pythia 6.2
    gSystem->Load("libAliPythia6");     // ALICE specific implementations
  } else if (proc != kHydjet) {
    gSystem->Load("libpythia6.4.21");   // Pythia 6.4
    gSystem->Load("libAliPythia6");     // ALICE specific implementations	
  }

  if (proc == kHijing || proc == kHijing2500 || proc == kHijing2500HF) {
	  gSystem->Load("libhijing");	
  	  gSystem->Load("libTHijing");
  } else if (proc == kHydjet)  {
	  gSystem->Load("libTUHKMgen");
  } else if (proc == kDpmjet) {
	  gSystem->Load("libdpmjet");
          gSystem->Load("libTDPMjet");
  } else if (proc == kAmptHF || proc == kAmpt) {
	  gSystem->Load("libampt");
       	  gSystem->Load("libTAmpt");
  }

  gSystem->Load("libgeant321");

#endif

  new TGeant3TGeo("C++ Interface to Geant3");


  //=======================================================================
  //  Create the output file

   
  AliRunLoader* rl=0x0;

  cout<<"Config.C: Creating Run Loader ..."<<endl;
  rl = AliRunLoader::Open("galice.root",
			  AliConfig::GetDefaultEventFolderName(),
			  "recreate");
  if (rl == 0x0)
    {
      gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
      return;
    }
  rl->SetCompressionLevel(2);
  rl->SetNumberOfEventsPerFile(1000);
  gAlice->SetRunLoader(rl);
  // gAlice->SetGeometryFromFile("geometry.root");
  // gAlice->SetGeometryFromCDB();
  
    // Set the trigger configuration
    AliSimulation::Instance()->SetTriggerConfig(pprTrigConfName[strig]);
    cout<<"Trigger configuration is set to  "<<pprTrigConfName[strig]<<endl;

  //
  //=======================================================================
  // ************* STEERING parameters FOR ALICE SIMULATION **************
  // --- Specify event type to be tracked through the ALICE setup
  // --- All positions are in cm, angles in degrees, and P and E in GeV


    gMC->SetProcess("DCAY",1);
    gMC->SetProcess("PAIR",1);
    gMC->SetProcess("COMP",1);
    gMC->SetProcess("PHOT",1);
    gMC->SetProcess("PFIS",0);
    gMC->SetProcess("DRAY",0);
    gMC->SetProcess("ANNI",1);
    gMC->SetProcess("BREM",1);
    gMC->SetProcess("MUNU",1);
    gMC->SetProcess("CKOV",1);
    gMC->SetProcess("HADR",1);
    gMC->SetProcess("LOSS",2);
    gMC->SetProcess("MULS",1);
    gMC->SetProcess("RAYL",1);

    Float_t cut = 1.e-3;        // 1MeV cut by default
    Float_t tofmax = 1.e10;

    gMC->SetCut("CUTGAM", cut);
    gMC->SetCut("CUTELE", cut);
    gMC->SetCut("CUTNEU", cut);
    gMC->SetCut("CUTHAD", cut);
    gMC->SetCut("CUTMUO", cut);
    gMC->SetCut("BCUTE",  cut); 
    gMC->SetCut("BCUTM",  cut); 
    gMC->SetCut("DCUTE",  cut); 
    gMC->SetCut("DCUTM",  cut); 
    gMC->SetCut("PPCUTM", cut);
    gMC->SetCut("TOFMAX", tofmax); 



    // RANDOM SELECTION OF ONE OF THE SEVEN GENERATION TYPES
    //
    Int_t typeHF  = -1;
    Float_t randHF = gRandom->Rndm();
    if(randHF < 0.16) {
      typeHF=0;
    } else if (randHF >= 0.16 && randHF < 0.32) {
      typeHF=1;
    } else if (randHF >= 0.32 && randHF < 0.48) {
      typeHF=2;
    } else if (randHF >= 0.48 && randHF < 0.64) {
      typeHF=3;
    } else if (randHF >= 0.64 && randHF < 0.80) {
      typeHF=4;
    } else {
      typeHF=5;
    } 

    //======================//
    // Set External decayer //
    //======================//
    if (proc != kHydjet) {
      TVirtualMCDecayer* decayer = new AliDecayerPythia();
      if(proc == kHijing2500HF && (typeHF==0 || typeHF==1)) {
	decayer->SetForceDecay(kHadronicDWithout4Bodies);
      } else {
	decayer->SetForceDecay(kAll);
      }
      decayer->Init();
      gMC->SetExternalDecayer(decayer);  
    }

  //=========================//
  // Generator Configuration //
  //=========================//
  AliGenerator* gener = 0x0;
  
  if (proc == kPythia6) {
      gener = MbPythia();
  } else if (proc == kPythia6D6T) {
      gener = MbPythiaTuneD6T();
  } else if (proc == kPythia6ATLAS) {
      gener = MbPythiaTuneATLAS();
  } else if (proc == kPythiaPerugia0) {
      gener = MbPythiaTunePerugia0();
  } else if (proc == kPythia6ATLAS_Flat) {
      gener = MbPythiaTuneATLAS_Flat();
  } else if (proc == kPhojet) {
      gener = MbPhojet();
  } else if (proc == kHijing) {
      gener = Hijing();	
  } else if (proc == kHijing2500) {
      gener = Hijing2500();	
  } else if (proc == kHijing2500HF || proc == kAmptHF) {
      gener = Hijing2500HF(typeHF);	
  } else if (proc == kHydjet) {
      gener = Hydjet();	
  } else if (proc == kDpmjet) {
      gener = Dpmjet();	
  } else if (proc == kAmpt) {
      gener = Ampt();	 
  }
  
  
  //
  //
  // Size of the interaction diamond
  // Longitudinal
  Float_t sigmaz  = 5.4 / TMath::Sqrt(2.); // [cm]
  
  //
  // Transverse
  Float_t betast  = 3.5;                      // beta* [m]
  Float_t eps     = 3.75e-6;                   // emittance [m]
  Float_t gamma   = energy / 2.0 / 0.938272;  // relativistic gamma [1]
  Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.;  // [cm]

  printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);
    
  gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position
  gener->SetVertexSmear(kPerEvent);
  gener->Init();

  printf("\n \n Comment: %s \n \n", comment.Data());

   //	
   // FIELD
   //

  TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG,
     	   	AliMagF::kBeamTypeAA, 1380.));


  rl->CdGAFile();
  
  Int_t iABSO  = 1;
  Int_t iACORDE= 0;
  Int_t iDIPO  = 1;
  Int_t iEMCAL = 1;
  Int_t iFMD   = 1;
  Int_t iFRAME = 1;
  Int_t iHALL  = 1;
  Int_t iITS   = 1;
  Int_t iMAG   = 1;
  Int_t iMUON  = 1;
  Int_t iPHOS  = 1;
  Int_t iPIPE  = 1;
  Int_t iPMD   = 1;
  Int_t iHMPID = 1;
  Int_t iSHIL  = 1;
  Int_t iT0    = 1;
  Int_t iTOF   = 1;
  Int_t iTPC   = 1;
  Int_t iTRD   = 1;
  Int_t iVZERO = 1;
  Int_t iZDC   = 1;
  

    //=================== Alice BODY parameters =============================
    AliBODY *BODY = new AliBODY("BODY", "Alice envelop");


    if (iMAG)
    {
        //=================== MAG parameters ============================
        // --- Start with Magnet since detector layouts may be depending ---
        // --- on the selected Magnet dimensions ---
        AliMAG *MAG = new AliMAG("MAG", "Magnet");
    }


    if (iABSO)
    {
        //=================== ABSO parameters ============================
        AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");
    }

    if (iDIPO)
    {
        //=================== DIPO parameters ============================

        AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
    }

    if (iHALL)
    {
        //=================== HALL parameters ============================

        AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
    }


    if (iFRAME)
    {
        //=================== FRAME parameters ============================

        AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
	FRAME->SetHoles(1);
    }

    if (iSHIL)
    {
        //=================== SHIL parameters ============================

        AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");
    }


    if (iPIPE)
    {
        //=================== PIPE parameters ============================

      AliPIPE *PIPE = new AliPIPEupgrade("PIPE", "Beam Pipe",0,1.8,0.08,40.0);
      //AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
    }
 
    if (iITS)
    {
        //=================== ITS parameters ============================
      gROOT->ProcessLine(".x $ALICE_ROOT/ITS/UPGRADE/testITSU/CreateITSU.C");
      //CreateITSU();
      //CreateITSUJune3();
      //	AliITS *ITS  = new AliITSv11("ITS","ITS v11");
    }

    if (iTPC)
    {
      //============================ TPC parameters =====================

        AliTPC *TPC = new AliTPCv2("TPC", "Default");
    }


    if (iTOF) {
        //=================== TOF parameters ============================

	AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");
    }


    if (iHMPID)
    {
        //=================== HMPID parameters ===========================

        AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");

    }


    if (iZDC)
    {
        //=================== ZDC parameters ============================

        AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
	ZDC->SetSpectatorsTrack();	
        ZDC->SetLumiLength(0.);
    }

    if (iTRD)
    {
        //=================== TRD parameters ============================

        AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
    }

    if (iFMD)
    {
        //=================== FMD parameters ============================

	AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
   }

    if (iMUON)
    {
        //=================== MUON parameters ===========================
        // New MUONv1 version (geometry defined via builders)

        AliMUON *MUON = new AliMUONv1("MUON", "default");
	// activate trigger efficiency by cells
	MUON->SetTriggerEffCells(1); // not needed if raw masks 
    }

    if (iPHOS)
    {
        //=================== PHOS parameters ===========================

     AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123");

    }


    if (iPMD)
    {
        //=================== PMD parameters ============================

        AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
    }

    if (iT0)
    {
        //=================== T0 parameters ============================
        AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
    }

    if (iEMCAL)
    {
        //=================== EMCAL parameters ============================

        AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_FIRSTYEARV1");
    }

     if (iACORDE)
    {
        //=================== ACORDE parameters ============================

        AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
    }

     if (iVZERO)
    {
        //=================== ACORDE parameters ============================

        AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
    }
}
//
//           PYTHIA
//

AliGenerator* MbPythia()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
      
      return pythia;
}

AliGenerator* MbPythiaTuneD6T()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    109     D6T : Rick Field's CDF Tune D6T (NB: needs CTEQ6L pdfs externally)
      pythia->SetTune(109); // F I X 
      pythia->SetStrucFunc(kCTEQ6l);
//
      return pythia;
}

AliGenerator* MbPythiaTunePerugia0()
{
      comment = comment.Append(" pp: Pythia low-pt (Perugia0)");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320); 
      pythia->UseNewMultipleInteractionsScenario();
//
      return pythia;
}


AliGenerator* MbPythiaTuneATLAS()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    C   306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune (needs CTEQ6L externally)
      pythia->SetTune(306);
      pythia->SetStrucFunc(kCTEQ6l);
//
      return pythia;
}

AliGenerator* PythiaJets()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12., 12.);
      pythia->SetPtRange(0, 1000.);
      pythia->SetProcess(kPyJets);
      pythia->SetEnergyCMS(energy);
      pythia->SetStrucFunc(kCTEQ6l);
      pythia->SetJetEtaRange(-1.5, 1.5); 
      pythia->SetJetEtRange(50., 800.);
      pythia->SetPtHard(45., 1000.);
      pythia->SetPycellParameters(2.2, 300, 432, 0., 4., 5., 0.7);
//
      return pythia;
}

AliGenerator* MbPythiaTuneATLAS_Flat()
{
      AliGenPythia* pythia = MbPythiaTuneATLAS();
      
      comment = comment.Append("; flat multiplicity distribution");
      
      // set high multiplicity trigger
      // this weight achieves a flat multiplicity distribution
      TH1 *weight = new TH1D("weight","weight",201,-0.5,200.5);
      weight->SetBinContent(1,5.49443);
      weight->SetBinContent(2,8.770816);
      weight->SetBinContent(6,0.4568624);
      weight->SetBinContent(7,0.2919915);
      weight->SetBinContent(8,0.6674189);
      weight->SetBinContent(9,0.364737);
      weight->SetBinContent(10,0.8818444);
      weight->SetBinContent(11,0.531885);
      weight->SetBinContent(12,1.035197);
      weight->SetBinContent(13,0.9394057);
      weight->SetBinContent(14,0.9643193);
      weight->SetBinContent(15,0.94543);
      weight->SetBinContent(16,0.9426507);
      weight->SetBinContent(17,0.9423649);
      weight->SetBinContent(18,0.789456);
      weight->SetBinContent(19,1.149026);
      weight->SetBinContent(20,1.100491);
      weight->SetBinContent(21,0.6350525);
      weight->SetBinContent(22,1.351941);
      weight->SetBinContent(23,0.03233504);
      weight->SetBinContent(24,0.9574557);
      weight->SetBinContent(25,0.868133);
      weight->SetBinContent(26,1.030998);
      weight->SetBinContent(27,1.08897);
      weight->SetBinContent(28,1.251382);
      weight->SetBinContent(29,0.1391099);
      weight->SetBinContent(30,1.192876);
      weight->SetBinContent(31,0.448944);
      weight->SetBinContent(32,1);
      weight->SetBinContent(33,1);
      weight->SetBinContent(34,1);
      weight->SetBinContent(35,1);
      weight->SetBinContent(36,0.9999997);
      weight->SetBinContent(37,0.9999997);
      weight->SetBinContent(38,0.9999996);
      weight->SetBinContent(39,0.9999996);
      weight->SetBinContent(40,0.9999995);
      weight->SetBinContent(41,0.9999993);
      weight->SetBinContent(42,1);
      weight->SetBinContent(43,1);
      weight->SetBinContent(44,1);
      weight->SetBinContent(45,1);
      weight->SetBinContent(46,1);
      weight->SetBinContent(47,0.9999999);
      weight->SetBinContent(48,0.9999998);
      weight->SetBinContent(49,0.9999998);
      weight->SetBinContent(50,0.9999999);
      weight->SetBinContent(51,0.9999999);
      weight->SetBinContent(52,0.9999999);
      weight->SetBinContent(53,0.9999999);
      weight->SetBinContent(54,0.9999998);
      weight->SetBinContent(55,0.9999998);
      weight->SetBinContent(56,0.9999998);
      weight->SetBinContent(57,0.9999997);
      weight->SetBinContent(58,0.9999996);
      weight->SetBinContent(59,0.9999995);
      weight->SetBinContent(60,1);
      weight->SetBinContent(61,1);
      weight->SetBinContent(62,1);
      weight->SetBinContent(63,1);
      weight->SetBinContent(64,1);
      weight->SetBinContent(65,0.9999999);
      weight->SetBinContent(66,0.9999998);
      weight->SetBinContent(67,0.9999998);
      weight->SetBinContent(68,0.9999999);
      weight->SetBinContent(69,1);
      weight->SetBinContent(70,1);
      weight->SetBinContent(71,0.9999997);
      weight->SetBinContent(72,0.9999995);
      weight->SetBinContent(73,0.9999994);
      weight->SetBinContent(74,1);
      weight->SetBinContent(75,1);
      weight->SetBinContent(76,1);
      weight->SetBinContent(77,1);
      weight->SetBinContent(78,0.9999999);
      weight->SetBinContent(79,1);
      weight->SetBinContent(80,1);
      weight->SetEntries(526);
        
      Int_t limit = weight->GetRandom();
      pythia->SetTriggerChargedMultiplicity(limit, 1.4);
      
      comment = comment.Append(Form("; multiplicity threshold set to %d in |eta| < 1.4", limit));

      return pythia;
}

AliGenerator* MbPhojet()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    DPMJET
#if defined(__CINT__)
  gSystem->Load("libdpmjet");      // Parton density functions
  gSystem->Load("libTDPMjet");      // Parton density functions
#endif
      AliGenDPMjet* dpmjet = new AliGenDPMjet(-1); 
      dpmjet->SetMomentumRange(0, 999999.);
      dpmjet->SetThetaRange(0., 180.);
      dpmjet->SetYRange(-12.,12.);
      dpmjet->SetPtRange(0,1000.);
      dpmjet->SetProcess(kDpmMb);
      dpmjet->SetEnergyCMS(energy);

      return dpmjet;
}


AliGenerator* MbPythiaTunePerugia0chadr()
{
      comment = comment.Append(" pp: Pythia (Perugia0) chadr (1 ccbar per event, 1 c-hadron in |y|<1.5, chadrons decay to hadrons");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-1.,1.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyCharmppMNRwmi);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();
//
//    decays
      pythia->SetForceDecay(kHadronicDWithout4Bodies);

//    write only HF sub event
      pythia->SetStackFillOpt(AliGenPythia::kHeavyFlavor);

      return pythia;
}

AliGenerator* MbPythiaTunePerugia0bchadr()
{
      comment = comment.Append(" pp: Pythia (Perugia0) bchadr (1 bbbar per event, 1 c-hadron in |y|<1.5, chadrons decay to hadrons");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-1.5,1.5);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyBeautyppMNRwmi);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();

//    decays
      pythia->SetForceDecay(kHadronicDWithout4Bodies);

//    write only HF sub event
      pythia->SetStackFillOpt(AliGenPythia::kHeavyFlavor);

      return pythia;
}

AliGenerator* MbPythiaTunePerugia0cele()
{
      comment = comment.Append(" pp: Pythia (Perugia0) cele (1 ccbar per event, 1 electron in |y|<1.2");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      //pythia->SetYRange(-2.,2.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyCharmppMNRwmi);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();
//
//    decays
      pythia->SetCutOnChild(1);
      pythia->SetPdgCodeParticleforAcceptanceCut(11);
      pythia->SetChildYRange(-1.2,1.2);
      pythia->SetChildPtRange(0,10000.);

//    write only HF sub event
      pythia->SetStackFillOpt(AliGenPythia::kHeavyFlavor);

      return pythia;
}

AliGenerator* MbPythiaTunePerugia0bele()
{
      comment = comment.Append(" pp: Pythia (Perugia0) bele (1 bbbar per event, 1 electron in |y|<1.2");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      //pythia->SetYRange(-2.,2.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyBeautyppMNRwmi);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();
//
//    decays
      pythia->SetCutOnChild(1);
      pythia->SetPdgCodeParticleforAcceptanceCut(11);
      pythia->SetChildYRange(-1.2,1.2);
      pythia->SetChildPtRange(0,10000.);

//    write only HF sub event
      pythia->SetStackFillOpt(AliGenPythia::kHeavyFlavor);

      return pythia;
}

AliGenerator* MbPythiaTunePerugia0Jpsi2e()
{
  comment = comment.Append("Jpsi forced to dielectrons");
  AliGenParam *jpsi=0x0;
  if(JpsiHarderPt) jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi");  // 8.8 TeV
  else jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 7", "Jpsi");  // 7 TeV
  jpsi->SetPtRange(0.,999.);
  jpsi->SetYRange(-1.0, 1.0);
  jpsi->SetPhiRange(0.,360.);
  jpsi->SetForceDecay(kDiElectron);
  return jpsi;
}

AliGenerator* MbPythiaTunePerugia0BtoJpsi2e()
{
      comment = comment.Append(" pp: Pythia (Perugia0) BtoJpsi (1 bbbar per event, 1 b-hadron in |y|<2, 1 J/psi in |y|<2");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-2.,2.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyBeautyppMNRwmi);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();
//
//    decays
      pythia->SetCutOnChild(1);
      pythia->SetPdgCodeParticleforAcceptanceCut(443);
      pythia->SetChildYRange(-2,2);
      pythia->SetChildPtRange(0,10000.);
      //
//    decays
      pythia->SetForceDecay(kBJpsiDiElectron);

      return pythia;
}

void ProcessEnvironmentVars()
{
    // Run type
    if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
      for (Int_t iRun = 0; iRun < kRunMax; iRun++) {
	if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), pprRunName[iRun])==0) {
	  proc = (PDC06Proc_t)iRun;
	  cout<<"Run type set to "<<pprRunName[iRun]<<endl;
	}
      }
    }

    // Field
    if (gSystem->Getenv("CONFIG_FIELD")) {
      for (Int_t iField = 0; iField < kFieldMax; iField++) {
	if (strcmp(gSystem->Getenv("CONFIG_FIELD"), pprField[iField])==0) {
	  mag = (Mag_t)iField;
	  cout<<"Field set to "<<pprField[iField]<<endl;
	}
      }
    }

    // Energy
    if (gSystem->Getenv("CONFIG_ENERGY")) {
      energy = atoi(gSystem->Getenv("CONFIG_ENERGY"));
      cout<<"Energy set to "<<energy<<" GeV"<<endl;
    }

    // Random Number seed
    if (gSystem->Getenv("CONFIG_SEED")) {
      seed = atoi(gSystem->Getenv("CONFIG_SEED"));
    }

  // Impact param
    if (gSystem->Getenv("CONFIG_BMIN")) {
      bMin = atof(gSystem->Getenv("CONFIG_BMIN"));
    }

    if (gSystem->Getenv("CONFIG_BMAX")) {
      bMax = atof(gSystem->Getenv("CONFIG_BMAX"));
    }
    cout<<"Impact parameter in ["<<bMin<<","<<bMax<<"]"<<endl;
}

AliGenerator* Hijing()
{
    AliGenHijing *gener = new AliGenHijing(-1);
// centre of mass energy 
    gener->SetEnergyCMS(energy);
    gener->SetImpactParameterRange(bMin, bMax);	
// reference frame
    gener->SetReferenceFrame("CMS");
// projectile
     gener->SetProjectile("A", 208, 82);
     gener->SetTarget    ("A", 208, 82);
// tell hijing to keep the full parent child chain
     gener->KeepFullEvent();
// enable jet quenching
     gener->SetJetQuenching(1);
// enable shadowing
     gener->SetShadowing(1);
// Don't track spectators
     gener->SetSpectators(0);
// kinematic selection
     gener->SetSelectAll(0);
     return gener;
}

AliGenerator* Hijing2500()
{
    AliGenHijing *gener = (AliGenHijing*) Hijing();
    gener->SetJetQuenching(0);	
    gener->SetPtHardMin (3.7);
    return gener;
}

AliGenerator* Hijing2500HF(Int_t typeHF)
{
  comment = comment.Append(" PbPb: Hjing2500 at 5.5 + pythia events for HF signals + ITS Upgrade signals");

  AliGenCocktail *cocktail = new AliGenCocktail();
  
  cocktail->SetProjectile("A", 208, 82);
  cocktail->SetTarget    ("A", 208, 82);
  cocktail->SetEnergyCMS(energy);
  //
  // 1 Hijing event  
  TFormula* one    = new TFormula("one",    "1.");
  // provides underlying event and collision geometry 
  if  (proc == kHijing2500HF) { 
  	AliGenHijing *hijing = Hijing2500();
  	cocktail->AddGenerator(hijing,"hijing",1);
	Float_t thminH = (180./TMath::Pi())*2.*atan(exp(-2.5));
	Float_t thmaxH = (180./TMath::Pi())*2.*atan(exp( 2.5));  
	hijing->SetChildThetaRange(thminH,thmaxH);
  }
  if  (proc == kAmptHF) { 
  	AliGenAmpt *ampt = Ampt();
  	cocktail->AddGenerator(ampt,"ampt",1);
  }
  
  //
  // N Pythia Heavy Flavor events
  // N is determined from impact parameter according to the following formula 
  TFormula* formula = new TFormula("Signals", 
				   "60. * (x < 5.) + 80. *(1. - x/20.)*(x>5.)");
  //
  AliGenerator* pythiaHF = 0x0;      
  switch(typeHF) {
  case 0:
    pythiaHF = MbPythiaTunePerugia0chadr();
    break;
  case 1:
    pythiaHF = MbPythiaTunePerugia0bchadr();
    break;
  case 2:
    pythiaHF = MbPythiaTunePerugia0cele();
    break;
  case 3:
    pythiaHF = MbPythiaTunePerugia0bele();
    break;
  case 4:
    pythiaHF = MbPythiaTunePerugia0Jpsi2e();
    break;
  case 5:
    pythiaHF = MbPythiaTunePerugia0BtoJpsi2e();
    break;
  case 6:
    pythiaHF = PythiaJets();
    break;
  default:
    pythiaHF = MbPythiaTunePerugia0chadr();
    break;
  }
  if (typeHF != 6) {	
        cocktail->AddGenerator(pythiaHF, "pythiaHF",   1, formula); 
  } else {
  	cocktail->AddGenerator(pythiaHF, "pythiaJets", 1, one); 
  }

 
  if(typeHF==0 || typeHF==4) { // only with c->D->h and Jpsi->ee
    // Rare decays: Lc, Lb, Ds, excl B, Xi_c

    //
    // Set pseudorapidity range from -1. to 1.
    // 
    Float_t thmin          = (180./TMath::Pi())*2.*atan(exp(-1.));  
    Float_t thmax          = (180./TMath::Pi())*2.*atan(exp( 1.));  

    AliGenParam *gen[14];
    UInt_t partId[7] = {AliGenITSULib::kLc,AliGenITSULib::kLb,AliGenITSULib::kXi_c,AliGenITSULib::kBplus, AliGenITSULib::kBzero, AliGenITSULib::kDs, AliGenITSULib::kDplus};  
    for(Int_t iPart=0; iPart<14 ; iPart++){
      if(iPart%2==0) gen[iPart] = new AliGenParam(15,new AliGenITSULib(),partId[iPart/2],"DIST");
      if(iPart%2==1) gen[iPart]= new AliGenParam(15,new AliGenITSULib(),-partId[iPart/2],"DIST");
      gen[iPart]->SetPtRange(0.,999.);
      gen[iPart]->SetPhiRange(0., 360.);
      gen[iPart]->SetYRange(-1.,1.);
      gen[iPart]->SetCutOnChild(1);
      gen[iPart]->SetChildThetaRange(thmin,thmax);
      gen[iPart]->SetSelectAll(kTRUE);
      gen[iPart]->SetForceDecay(kBeautyUpgrade);
      cocktail->AddGenerator(gen[iPart], Form("Generator_%i_%i",partId[iPart/2],iPart%2), 1);
    }
  }  

  
  // Hypernuclei: 10 per type for 3LH, 4LH, 4LHe
  AliGenBox *pG1=new AliGenBox(5);
  pG1->SetPart(1010010030);
  pG1->SetPtRange(0,10);
  pG1->SetPhiRange(0,360);
  pG1->SetYRange(-1,1);
  cocktail->AddGenerator(pG1,"g1",1);    

  AliGenBox *pG2=new AliGenBox(5);
  pG2->SetPart(-1010010030);
  pG2->SetPtRange(0,10);
  pG2->SetPhiRange(0,360);
  pG2->SetYRange(-1,1);
  cocktail->AddGenerator(pG2,"g2",1);    

  AliGenBox *pG3=new AliGenBox(5);
  pG3->SetPart(1010010040);
  pG3->SetPtRange(0,10);
  pG3->SetPhiRange(0,360);
  pG3->SetYRange(-1,1);
  cocktail->AddGenerator(pG3,"g3",1);    

  AliGenBox *pG4=new AliGenBox(5);
  pG4->SetPart(-1010010040);
  pG4->SetPtRange(0,10);
  pG4->SetPhiRange(0,360);
  pG4->SetYRange(-1,1);
  cocktail->AddGenerator(pG4,"g4",1);    

  AliGenBox *pG5=new AliGenBox(5);
  pG5->SetPart(1010020040);
  pG5->SetPtRange(0,10);
  pG5->SetPhiRange(0,360);
  pG5->SetYRange(-1,1);
  cocktail->AddGenerator(pG5,"g5",1);    

  AliGenBox *pG6=new AliGenBox(5);
  pG6->SetPart(-1010020040);
  pG6->SetPtRange(0,10);
  pG6->SetPhiRange(0,360);
  pG6->SetYRange(-1,1);
  cocktail->AddGenerator(pG6,"g6",1);    
  

  return cocktail;
}


AliGenerator* Hydjet()
{
  AliGenUHKM *genHi = new AliGenUHKM(-1);
  genHi->SetAllParametersLHC();
  genHi->SetProjectile("A", 208, 82);
  genHi->SetTarget    ("A", 208, 82);
  genHi->SetEcms(2760);
  genHi->SetEnergyCMS(2760.);
  genHi->SetBmin(bMin);
  genHi->SetBmax(bMax);
  genHi->SetPyquenPtmin(9);
  return genHi;
}

AliGenerator* Dpmjet()
{
  AliGenDPMjet* dpmjet = new AliGenDPMjet(-1); 
  dpmjet->SetEnergyCMS(energy);
  dpmjet->SetProjectile("A", 208, 82);
  dpmjet->SetTarget    ("A", 208, 82);
  dpmjet->SetImpactParameterRange(bMin, bMax);
  dpmjet->SetPi0Decay(0);
  return dpmjet;
}

AliGenerator* Ampt()
{

  AliGenAmpt *genHi = new AliGenAmpt(-1);
  genHi->SetEnergyCMS(2760);
  genHi->SetReferenceFrame("CMS");
  genHi->SetProjectile("A", 208, 82);
  genHi->SetTarget    ("A", 208, 82);
  genHi->SetPtHardMin (2);
  genHi->SetImpactParameterRange(bMin,bMax);
  genHi->SetJetQuenching(0); // enable jet quenching
  genHi->SetShadowing(1);    // enable shadowing
  genHi->SetDecaysOff(1);    // neutral pion and heavy particle decays switched off
  genHi->SetSpectators(0);   // track spectators 
  genHi->KeepFullEvent();
  genHi->SetSelectAll(0);
  return genHi;
}

//---------------------------------------
void CreateITSU()
{
  // build ITS upgrade detector
  // sensitive area 13x15mm (X,Z) with 20x20 micron pitch, 2mm dead zone on readout side and 50 micron guardring
  const double kSensThick = 18e-4;
  const double kPitchX = 20e-4;
  const double kPitchZ = 20e-4;
  const int    kNRow   = 650; 
  const int    kNCol   = 750;
  const int    kNChips = 4;
  const double kLrTick03 = 237e-4;   // -> effective thickness for ~0.3%X layers
  const double kLrTick08 = 610e-4;   // -> effective thickness for ~0.8%X layers
  //
  const double kReadOutEdge = 0.2;   // width of the readout edge (passive bottom)
  const double kGuardRing   = 100e-4; // width of passive area on left/right/top of the sensor
  // create segmentations:
  AliITSUSegmentationPix* seg0 = new AliITSUSegmentationPix(0,        // segID (0:9)
							    kNChips,  // chips per module
							    kNChips*kNCol,    // ncols (total for module)
							    kNRow,    // nrows
							    kPitchX,  // default row pitch in cm
							    kPitchZ,  // default col pitch in cm
							    kSensThick,  // sensor thickness in cm
							    -1,     // no special left col between chips
							    -1,     // no special right col between chips
							    kGuardRing, // left
							    kGuardRing, // right
							    kGuardRing, // top
							    kReadOutEdge  // bottom
							    );    // see AliITSUSegmentationPix.h for extra options
  seg0->Store(AliITSUGeomTGeo::GetITSsegmentationFileName());
  //
  AliITSUSegmentationPix* seg1 = new AliITSUSegmentationPix(1,        // segID (0:9)
							    kNChips,  // chips per module
							    kNChips*kNCol,    // ncols (total for module)
							    2*kNRow,    // nrows for oute layers
							    kPitchX,  // default row pitch in cm
							    kPitchZ,  // default col pitch in cm
							    kSensThick,  // sensor thickness in cm
							    -1,     // no special left col between chips
							    -1,     // no special right col between chips
							    kGuardRing, // left
							    kGuardRing, // right
							    kReadOutEdge, // top   !!! readout from both sides
							    kReadOutEdge  // bottom
							    );    // see AliITSUSegmentationPix.h for extra options
  seg1->Store(AliITSUGeomTGeo::GetITSsegmentationFileName());
  //
  seg0->Print();
  seg1->Print();
  //
  const double kMinOvl = 0.005; // require active zones overlap
  const double kPhi0 = 0.;  // az.angle of 1st stave
  const double kTilt = 10.; // tilt in degrees
  double dzLr,rLr,ovlA,xActProj;
  AliITSUSegmentationPix* seg=0;
  int nStaveLr,nModPerStaveLr,idLr;
  //      virtual void   DefineLayerTurbo(const Int_t nlay, const Double_t r,  const Double_t zlen, const Int_t nladd,   const Int_t nmod, const Double_t width,
  //				  const Double_t tilt,   const Double_t lthick = 0.,    const Double_t dthick = 0.,   const UInt_t detType=0);
  AliITSUv11 *ITS  = new AliITSUv11("ITS Upgrade",7);
  //
  // INNER LAYERS
  idLr = 0;
  rLr = 2.2;
  dzLr = 2*11.2;   // min Z to cover
  seg = seg0;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<0.015 && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick03, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f\% (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  idLr = 1;
  rLr = 2.8;
  dzLr = 2*12.1;
  seg = seg0;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<0.015 && nStaveLr++;);		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick03, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f\% (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  idLr = 2;
  rLr = 3.6;
  dzLr = 2*13.4;
  seg = seg0;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<0.015 && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick03, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f\% (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  // 
  // MIDDLE LAYERS (double side readout sensors)
  idLr = 3;
  rLr = 20.0;
  dzLr = 2*39.0;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<0.015 && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f\% (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  idLr = 4;
  rLr = 22.0;
  dzLr = 2*41.8;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<0.015 && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f\% (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  // 
  // OUTER LAYERS (double side readout sensors)
  idLr = 5;
  rLr = 40.0;
  dzLr = 2*71.2;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<0.015 && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f\% (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  idLr = 6;
  rLr = 43.0;
  dzLr = 2*74.3;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<0.015 && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f\% (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  
}

void CreateITSUdetailed() {
     //
     //=================== ITS parameters ============================
     //
     // create segmentations:
     AliITSUSegmentationPix* seg0 = new AliITSUSegmentationPix(0,    // segID (0:9)
								5,    // chips per module
								1500, // ncols (total for module)
								750,  //835,  // nrows
								20.e-4,  // default row pitch in cm
								20.e-4,  // default col pitch in cm
								50.e-4  // sensor thickness in cm
								);    // see AliITSUSegmentationPix.h for extra options
     seg0->Store(AliITSUGeomTGeo::GetITSsegmentationFileName());
     AliITSUSegmentationPix* seg1 = new AliITSUSegmentationPix(1,    // segID (0:9)
								5*2,    // chips per module
								1500, // ncols (total for module)
								750*2,//835,  // nrows
								20.e-4,  // default row pitch in cm
								20.e-4,  // default col pitch in cm
								50.e-4  // sensor thickness in cm
								);    // see AliITSUSegmentationPix.h for extra options
     seg1->Store(AliITSUGeomTGeo::GetITSsegmentationFileName());
     AliITSUSegmentationPix* seg2 = new AliITSUSegmentationPix(2,    // segID (0:9)
								5*2,    // chips per module
								1500, // ncols (total for module)
								750*2,//835,  // nrows
								20.e-4,  // default row pitch in cm
								20.e-4,  // default col pitch in cm
								50.e-4   // sensor thickness in cm
								);    // see AliITSUSegmentationPix.h for extra options
     seg2->Store(AliITSUGeomTGeo::GetITSsegmentationFileName());
     //
     int nmod,nlad; // modules per ladded, n ladders
     // sum of insensitive boarder around module (in cm)
     Float_t deadX = 0.05;  // on each side
     Float_t deadZ = 0.1; // on each side
     double thickLr = 0.0267; // ladder thickness (dummy silicon for material to be 0.3%(X0) )
     double tilt = 15;//-TMath::ASin((seg0->Dx()+deadX*2)/2 / (2.2-thickLr+seg0->Dy()/2+thickLr/2))*TMath::RadToDeg(); 


     Int_t buildLevel = 0;

     Double_t phi0=0.;
     //      AliITSUv11 *ITS  = new AliITSUv11("ITS Upgrade",7);
     AliITSUv0 *ITS  = new AliITSUv0("ITS Upgrade",7);
     //ITS->SetStaveModel(kModelDummy);
     ITS->SetStaveModel(kModel22);
     nmod = 9;
     nlad = 12;
     ITS->DefineLayerTurbo(0,phi0, 2.2-thickLr+seg0->Dy()/2,  nmod*(seg0->Dz()+deadZ*2), nlad, nmod, seg0->Dx()+deadX*2, tilt, thickLr, seg0->Dy(), seg0->GetDetTypeID(),buildLevel);

    // ITS->DefineLayerTurbo(0,phi0, 2.2-thickLr+seg0->Dy()/2,  nmod*(seg0->Dz()+deadZ*2), nlad, nmod, seg0->Dx()+deadX*2-0.24, tilt, thickLr, seg0->Dy(), seg0->GetDetTypeID(),buildLevel);	// NO OVERLAP

     nmod = 9;
     nlad = 14;
     ITS->DefineLayerTurbo(1,phi0, 3.0-thickLr+seg0->Dy()/2,  nmod*(seg0->Dz()+deadZ*2), nlad, nmod, seg0->Dx()+deadX*2, tilt, thickLr, seg0->Dy(), seg0->GetDetTypeID());

     nmod = 9;
     nlad = 18;
     ITS->DefineLayerTurbo(2,phi0, 3.75-thickLr+seg0->Dy()/2,  nmod*(seg0->Dz()+deadZ*2), nlad, nmod, seg0->Dx()+deadX*2, tilt, thickLr, seg0->Dy(), seg0->GetDetTypeID());

     nmod = 29;
     nlad = 55;
     ITS->DefineLayerTurbo(3,phi0, 20.0-thickLr+seg1->Dy()/2, nmod*(seg1->Dz()+deadZ*2), nlad, nmod, seg1->Dx()+deadX*2, tilt, thickLr, seg1->Dy(), seg1->GetDetTypeID());
     nmod = 29;
     nlad = 55;
     ITS->DefineLayerTurbo(4,phi0, 22.0-thickLr+seg1->Dy()/2, nmod*(seg1->Dz()+deadZ*2), nlad, nmod, seg1->Dx()+deadX*2, tilt, thickLr, seg1->Dy(), seg1->GetDetTypeID());
     nmod = 50;
     nlad = 94;
     ITS->DefineLayerTurbo(5,phi0, 40.0-thickLr+seg2->Dy()/2, nmod*(seg2->Dz()+deadZ*2), nlad, nmod, seg2->Dx()+deadX*2, tilt, thickLr, seg2->Dy(), seg2->GetDetTypeID()); //41 creates ovl!
     nmod = 50;
     nlad = 94;
     ITS->DefineLayerTurbo(6,phi0, 43.0-thickLr+seg2->Dy()/2, nmod*(seg2->Dz()+deadZ*2), nlad, nmod, seg2->Dx()+deadX*2, tilt, thickLr, seg2->Dy(), seg2->GetDetTypeID()); 

     //
     //
}

//---------------------------------------
void CreateITSUJune3()
{


  // build ITS upgrade detector
  // sensitive area 13x15mm (X,Z) with 20x20 micron pitch, 2mm dead zone on readout side and 50 micron guardring
  const double kSensThick = 18e-4;
  const double kPitchX = 20e-4;
  const double kPitchZ = 20e-4;
  const int    kNRow   = 650; 
  const int    kNCol   = 750;
  const int    kNChips = 2;
  const double kLrTick03 = 195e-4;   // -> effective thickness for ~0.3%X layers
  const double kLrTick08 = 600e-4;   // -> effective thickness for ~0.8%X layers
  //
  const double kReadOutEdge = 0.2;   // width of the readout edge (passive bottom)
  const double kGuardRing   = 50e-4; // width of passive area on left/right/top of the sensor
  // create segmentations:
  AliITSUSegmentationPix* seg0 = new AliITSUSegmentationPix(0,        // segID (0:9)
							    kNChips,  // chips per module
							    kNChips*kNCol,    // ncols (total for module)
							    kNRow,    // nrows
							    kPitchX,  // default row pitch in cm
							    kPitchZ,  // default col pitch in cm
							    kSensThick,  // sensor thickness in cm
							    -1,     // no special left col between chips
							    -1,     // no special right col between chips
							    kGuardRing, // left
							    kGuardRing, // right
							    kGuardRing, // top
							    kReadOutEdge  // bottom
							    );    // see AliITSUSegmentationPix.h for extra options
  seg0->Store(AliITSUGeomTGeo::GetITSsegmentationFileName());
  //
  AliITSUSegmentationPix* seg1 = new AliITSUSegmentationPix(1,        // segID (0:9)
							    kNChips,  // chips per module
							    kNChips*kNCol,    // ncols (total for module)
							    2*kNRow,    // nrows for oute layers
							    kPitchX,  // default row pitch in cm
							    kPitchZ,  // default col pitch in cm
							    kSensThick,  // sensor thickness in cm
							    -1,     // no special left col between chips
							    -1,     // no special right col between chips
							    kGuardRing, // left
							    kGuardRing, // right
							    kReadOutEdge, // top   !!! readout from both sides
							    kReadOutEdge  // bottom
							    );    // see AliITSUSegmentationPix.h for extra options
  seg1->Store(AliITSUGeomTGeo::GetITSsegmentationFileName());
  //
  seg0->Print();
  seg1->Print();
  //
  const double kMinOvl = 0.005; // require active zones overlap
  const double kPhi0 = 0.;  // az.angle of 1st stave
  const double kTilt = 10.; // tilt in degrees
  double dzLr,rLr,ovlA,xActProj;
  AliITSUSegmentationPix* seg=0;
  int nStaveLr,nModPerStaveLr,idLr;
  //      virtual void   DefineLayerTurbo(const Int_t nlay, const Double_t r,  const Double_t zlen, const Int_t nladd,   const Int_t nmod, const Double_t width,
  //				  const Double_t tilt,   const Double_t lthick = 0.,    const Double_t dthick = 0.,   const UInt_t detType=0);
  AliITSUv0 *ITS  = new AliITSUv0("ITS Upgrade",7);
  ITS->SetStaveModel(AliITSUv0::kModel22);
  //
  // INNER LAYERS
  idLr = 0;
  rLr = 2.2;
  dzLr = 2*11.2;   // min Z to cover
  seg = seg0;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<kMinOvl && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick03, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1.e4));
  //
  idLr = 1;
  rLr = 2.8;
  dzLr = 2*12.1;
  seg = seg0;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<kMinOvl && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick03, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  idLr = 2;
  rLr = 3.6;
  dzLr = 2*13.4;
  seg = seg0;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<kMinOvl && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick03, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  // 
  // MIDDLE LAYERS (double side readout sensors)
  idLr = 3;
  rLr = 20.0;
  dzLr = 2*39.0;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<kMinOvl && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  idLr = 4;
  rLr = 22.0;
  dzLr = 2*41.8;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<kMinOvl && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  // 
  // OUTER LAYERS (double side readout sensors)
  idLr = 5;
  rLr = 40.0;
  dzLr = 2*71.2;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<kMinOvl && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //
  idLr = 6;
  rLr = 43.0;
  dzLr = 2*74.3;
  seg = seg1;
  nModPerStaveLr = 1+dzLr/seg->Dz();
  ovlA = -1;
  xActProj = seg->DxActive()*TMath::Cos(kTilt*TMath::DegToRad()); // effective r-phi coverage by single stave
  nStaveLr = 1 + rLr*TMath::Pi()*2/xActProj;
  do { ovlA = 1.-rLr*TMath::Pi()*2/nStaveLr/xActProj; } while ( kMinOvl>=0 && ovlA<kMinOvl && nStaveLr++ );		
  ITS->DefineLayerTurbo(idLr, kPhi0, rLr, nModPerStaveLr*seg->Dz(), nStaveLr, nModPerStaveLr, seg->Dx(), kTilt, kLrTick08, seg->Dy(), seg->GetDetTypeID());
  printf("Add Lr%d: R=%.1f DZ:%.1f Staves:%3d NMod/Stave:%3d -> Active Overlap:%.1f (%d micron)\n",
	 idLr,rLr,nModPerStaveLr*seg->Dz()/2,nStaveLr,nModPerStaveLr,ovlA*100,int(ovlA*xActProj*1e4));
  //

  
}
 Config_ITSU.C:1
 Config_ITSU.C:2
 Config_ITSU.C:3
 Config_ITSU.C:4
 Config_ITSU.C:5
 Config_ITSU.C:6
 Config_ITSU.C:7
 Config_ITSU.C:8
 Config_ITSU.C:9
 Config_ITSU.C:10
 Config_ITSU.C:11
 Config_ITSU.C:12
 Config_ITSU.C:13
 Config_ITSU.C:14
 Config_ITSU.C:15
 Config_ITSU.C:16
 Config_ITSU.C:17
 Config_ITSU.C:18
 Config_ITSU.C:19
 Config_ITSU.C:20
 Config_ITSU.C:21
 Config_ITSU.C:22
 Config_ITSU.C:23
 Config_ITSU.C:24
 Config_ITSU.C:25
 Config_ITSU.C:26
 Config_ITSU.C:27
 Config_ITSU.C:28
 Config_ITSU.C:29
 Config_ITSU.C:30
 Config_ITSU.C:31
 Config_ITSU.C:32
 Config_ITSU.C:33
 Config_ITSU.C:34
 Config_ITSU.C:35
 Config_ITSU.C:36
 Config_ITSU.C:37
 Config_ITSU.C:38
 Config_ITSU.C:39
 Config_ITSU.C:40
 Config_ITSU.C:41
 Config_ITSU.C:42
 Config_ITSU.C:43
 Config_ITSU.C:44
 Config_ITSU.C:45
 Config_ITSU.C:46
 Config_ITSU.C:47
 Config_ITSU.C:48
 Config_ITSU.C:49
 Config_ITSU.C:50
 Config_ITSU.C:51
 Config_ITSU.C:52
 Config_ITSU.C:53
 Config_ITSU.C:54
 Config_ITSU.C:55
 Config_ITSU.C:56
 Config_ITSU.C:57
 Config_ITSU.C:58
 Config_ITSU.C:59
 Config_ITSU.C:60
 Config_ITSU.C:61
 Config_ITSU.C:62
 Config_ITSU.C:63
 Config_ITSU.C:64
 Config_ITSU.C:65
 Config_ITSU.C:66
 Config_ITSU.C:67
 Config_ITSU.C:68
 Config_ITSU.C:69
 Config_ITSU.C:70
 Config_ITSU.C:71
 Config_ITSU.C:72
 Config_ITSU.C:73
 Config_ITSU.C:74
 Config_ITSU.C:75
 Config_ITSU.C:76
 Config_ITSU.C:77
 Config_ITSU.C:78
 Config_ITSU.C:79
 Config_ITSU.C:80
 Config_ITSU.C:81
 Config_ITSU.C:82
 Config_ITSU.C:83
 Config_ITSU.C:84
 Config_ITSU.C:85
 Config_ITSU.C:86
 Config_ITSU.C:87
 Config_ITSU.C:88
 Config_ITSU.C:89
 Config_ITSU.C:90
 Config_ITSU.C:91
 Config_ITSU.C:92
 Config_ITSU.C:93
 Config_ITSU.C:94
 Config_ITSU.C:95
 Config_ITSU.C:96
 Config_ITSU.C:97
 Config_ITSU.C:98
 Config_ITSU.C:99
 Config_ITSU.C:100
 Config_ITSU.C:101
 Config_ITSU.C:102
 Config_ITSU.C:103
 Config_ITSU.C:104
 Config_ITSU.C:105
 Config_ITSU.C:106
 Config_ITSU.C:107
 Config_ITSU.C:108
 Config_ITSU.C:109
 Config_ITSU.C:110
 Config_ITSU.C:111
 Config_ITSU.C:112
 Config_ITSU.C:113
 Config_ITSU.C:114
 Config_ITSU.C:115
 Config_ITSU.C:116
 Config_ITSU.C:117
 Config_ITSU.C:118
 Config_ITSU.C:119
 Config_ITSU.C:120
 Config_ITSU.C:121
 Config_ITSU.C:122
 Config_ITSU.C:123
 Config_ITSU.C:124
 Config_ITSU.C:125
 Config_ITSU.C:126
 Config_ITSU.C:127
 Config_ITSU.C:128
 Config_ITSU.C:129
 Config_ITSU.C:130
 Config_ITSU.C:131
 Config_ITSU.C:132
 Config_ITSU.C:133
 Config_ITSU.C:134
 Config_ITSU.C:135
 Config_ITSU.C:136
 Config_ITSU.C:137
 Config_ITSU.C:138
 Config_ITSU.C:139
 Config_ITSU.C:140
 Config_ITSU.C:141
 Config_ITSU.C:142
 Config_ITSU.C:143
 Config_ITSU.C:144
 Config_ITSU.C:145
 Config_ITSU.C:146
 Config_ITSU.C:147
 Config_ITSU.C:148
 Config_ITSU.C:149
 Config_ITSU.C:150
 Config_ITSU.C:151
 Config_ITSU.C:152
 Config_ITSU.C:153
 Config_ITSU.C:154
 Config_ITSU.C:155
 Config_ITSU.C:156
 Config_ITSU.C:157
 Config_ITSU.C:158
 Config_ITSU.C:159
 Config_ITSU.C:160
 Config_ITSU.C:161
 Config_ITSU.C:162
 Config_ITSU.C:163
 Config_ITSU.C:164
 Config_ITSU.C:165
 Config_ITSU.C:166
 Config_ITSU.C:167
 Config_ITSU.C:168
 Config_ITSU.C:169
 Config_ITSU.C:170
 Config_ITSU.C:171
 Config_ITSU.C:172
 Config_ITSU.C:173
 Config_ITSU.C:174
 Config_ITSU.C:175
 Config_ITSU.C:176
 Config_ITSU.C:177
 Config_ITSU.C:178
 Config_ITSU.C:179
 Config_ITSU.C:180
 Config_ITSU.C:181
 Config_ITSU.C:182
 Config_ITSU.C:183
 Config_ITSU.C:184
 Config_ITSU.C:185
 Config_ITSU.C:186
 Config_ITSU.C:187
 Config_ITSU.C:188
 Config_ITSU.C:189
 Config_ITSU.C:190
 Config_ITSU.C:191
 Config_ITSU.C:192
 Config_ITSU.C:193
 Config_ITSU.C:194
 Config_ITSU.C:195
 Config_ITSU.C:196
 Config_ITSU.C:197
 Config_ITSU.C:198
 Config_ITSU.C:199
 Config_ITSU.C:200
 Config_ITSU.C:201
 Config_ITSU.C:202
 Config_ITSU.C:203
 Config_ITSU.C:204
 Config_ITSU.C:205
 Config_ITSU.C:206
 Config_ITSU.C:207
 Config_ITSU.C:208
 Config_ITSU.C:209
 Config_ITSU.C:210
 Config_ITSU.C:211
 Config_ITSU.C:212
 Config_ITSU.C:213
 Config_ITSU.C:214
 Config_ITSU.C:215
 Config_ITSU.C:216
 Config_ITSU.C:217
 Config_ITSU.C:218
 Config_ITSU.C:219
 Config_ITSU.C:220
 Config_ITSU.C:221
 Config_ITSU.C:222
 Config_ITSU.C:223
 Config_ITSU.C:224
 Config_ITSU.C:225
 Config_ITSU.C:226
 Config_ITSU.C:227
 Config_ITSU.C:228
 Config_ITSU.C:229
 Config_ITSU.C:230
 Config_ITSU.C:231
 Config_ITSU.C:232
 Config_ITSU.C:233
 Config_ITSU.C:234
 Config_ITSU.C:235
 Config_ITSU.C:236
 Config_ITSU.C:237
 Config_ITSU.C:238
 Config_ITSU.C:239
 Config_ITSU.C:240
 Config_ITSU.C:241
 Config_ITSU.C:242
 Config_ITSU.C:243
 Config_ITSU.C:244
 Config_ITSU.C:245
 Config_ITSU.C:246
 Config_ITSU.C:247
 Config_ITSU.C:248
 Config_ITSU.C:249
 Config_ITSU.C:250
 Config_ITSU.C:251
 Config_ITSU.C:252
 Config_ITSU.C:253
 Config_ITSU.C:254
 Config_ITSU.C:255
 Config_ITSU.C:256
 Config_ITSU.C:257
 Config_ITSU.C:258
 Config_ITSU.C:259
 Config_ITSU.C:260
 Config_ITSU.C:261
 Config_ITSU.C:262
 Config_ITSU.C:263
 Config_ITSU.C:264
 Config_ITSU.C:265
 Config_ITSU.C:266
 Config_ITSU.C:267
 Config_ITSU.C:268
 Config_ITSU.C:269
 Config_ITSU.C:270
 Config_ITSU.C:271
 Config_ITSU.C:272
 Config_ITSU.C:273
 Config_ITSU.C:274
 Config_ITSU.C:275
 Config_ITSU.C:276
 Config_ITSU.C:277
 Config_ITSU.C:278
 Config_ITSU.C:279
 Config_ITSU.C:280
 Config_ITSU.C:281
 Config_ITSU.C:282
 Config_ITSU.C:283
 Config_ITSU.C:284
 Config_ITSU.C:285
 Config_ITSU.C:286
 Config_ITSU.C:287
 Config_ITSU.C:288
 Config_ITSU.C:289
 Config_ITSU.C:290
 Config_ITSU.C:291
 Config_ITSU.C:292
 Config_ITSU.C:293
 Config_ITSU.C:294
 Config_ITSU.C:295
 Config_ITSU.C:296
 Config_ITSU.C:297
 Config_ITSU.C:298
 Config_ITSU.C:299
 Config_ITSU.C:300
 Config_ITSU.C:301
 Config_ITSU.C:302
 Config_ITSU.C:303
 Config_ITSU.C:304
 Config_ITSU.C:305
 Config_ITSU.C:306
 Config_ITSU.C:307
 Config_ITSU.C:308
 Config_ITSU.C:309
 Config_ITSU.C:310
 Config_ITSU.C:311
 Config_ITSU.C:312
 Config_ITSU.C:313
 Config_ITSU.C:314
 Config_ITSU.C:315
 Config_ITSU.C:316
 Config_ITSU.C:317
 Config_ITSU.C:318
 Config_ITSU.C:319
 Config_ITSU.C:320
 Config_ITSU.C:321
 Config_ITSU.C:322
 Config_ITSU.C:323
 Config_ITSU.C:324
 Config_ITSU.C:325
 Config_ITSU.C:326
 Config_ITSU.C:327
 Config_ITSU.C:328
 Config_ITSU.C:329
 Config_ITSU.C:330
 Config_ITSU.C:331
 Config_ITSU.C:332
 Config_ITSU.C:333
 Config_ITSU.C:334
 Config_ITSU.C:335
 Config_ITSU.C:336
 Config_ITSU.C:337
 Config_ITSU.C:338
 Config_ITSU.C:339
 Config_ITSU.C:340
 Config_ITSU.C:341
 Config_ITSU.C:342
 Config_ITSU.C:343
 Config_ITSU.C:344
 Config_ITSU.C:345
 Config_ITSU.C:346
 Config_ITSU.C:347
 Config_ITSU.C:348
 Config_ITSU.C:349
 Config_ITSU.C:350
 Config_ITSU.C:351
 Config_ITSU.C:352
 Config_ITSU.C:353
 Config_ITSU.C:354
 Config_ITSU.C:355
 Config_ITSU.C:356
 Config_ITSU.C:357
 Config_ITSU.C:358
 Config_ITSU.C:359
 Config_ITSU.C:360
 Config_ITSU.C:361
 Config_ITSU.C:362
 Config_ITSU.C:363
 Config_ITSU.C:364
 Config_ITSU.C:365
 Config_ITSU.C:366
 Config_ITSU.C:367
 Config_ITSU.C:368
 Config_ITSU.C:369
 Config_ITSU.C:370
 Config_ITSU.C:371
 Config_ITSU.C:372
 Config_ITSU.C:373
 Config_ITSU.C:374
 Config_ITSU.C:375
 Config_ITSU.C:376
 Config_ITSU.C:377
 Config_ITSU.C:378
 Config_ITSU.C:379
 Config_ITSU.C:380
 Config_ITSU.C:381
 Config_ITSU.C:382
 Config_ITSU.C:383
 Config_ITSU.C:384
 Config_ITSU.C:385
 Config_ITSU.C:386
 Config_ITSU.C:387
 Config_ITSU.C:388
 Config_ITSU.C:389
 Config_ITSU.C:390
 Config_ITSU.C:391
 Config_ITSU.C:392
 Config_ITSU.C:393
 Config_ITSU.C:394
 Config_ITSU.C:395
 Config_ITSU.C:396
 Config_ITSU.C:397
 Config_ITSU.C:398
 Config_ITSU.C:399
 Config_ITSU.C:400
 Config_ITSU.C:401
 Config_ITSU.C:402
 Config_ITSU.C:403
 Config_ITSU.C:404
 Config_ITSU.C:405
 Config_ITSU.C:406
 Config_ITSU.C:407
 Config_ITSU.C:408
 Config_ITSU.C:409
 Config_ITSU.C:410
 Config_ITSU.C:411
 Config_ITSU.C:412
 Config_ITSU.C:413
 Config_ITSU.C:414
 Config_ITSU.C:415
 Config_ITSU.C:416
 Config_ITSU.C:417
 Config_ITSU.C:418
 Config_ITSU.C:419
 Config_ITSU.C:420
 Config_ITSU.C:421
 Config_ITSU.C:422
 Config_ITSU.C:423
 Config_ITSU.C:424
 Config_ITSU.C:425
 Config_ITSU.C:426
 Config_ITSU.C:427
 Config_ITSU.C:428
 Config_ITSU.C:429
 Config_ITSU.C:430
 Config_ITSU.C:431
 Config_ITSU.C:432
 Config_ITSU.C:433
 Config_ITSU.C:434
 Config_ITSU.C:435
 Config_ITSU.C:436
 Config_ITSU.C:437
 Config_ITSU.C:438
 Config_ITSU.C:439
 Config_ITSU.C:440
 Config_ITSU.C:441
 Config_ITSU.C:442
 Config_ITSU.C:443
 Config_ITSU.C:444
 Config_ITSU.C:445
 Config_ITSU.C:446
 Config_ITSU.C:447
 Config_ITSU.C:448
 Config_ITSU.C:449
 Config_ITSU.C:450
 Config_ITSU.C:451
 Config_ITSU.C:452
 Config_ITSU.C:453
 Config_ITSU.C:454
 Config_ITSU.C:455
 Config_ITSU.C:456
 Config_ITSU.C:457
 Config_ITSU.C:458
 Config_ITSU.C:459
 Config_ITSU.C:460
 Config_ITSU.C:461
 Config_ITSU.C:462
 Config_ITSU.C:463
 Config_ITSU.C:464
 Config_ITSU.C:465
 Config_ITSU.C:466
 Config_ITSU.C:467
 Config_ITSU.C:468
 Config_ITSU.C:469
 Config_ITSU.C:470
 Config_ITSU.C:471
 Config_ITSU.C:472
 Config_ITSU.C:473
 Config_ITSU.C:474
 Config_ITSU.C:475
 Config_ITSU.C:476
 Config_ITSU.C:477
 Config_ITSU.C:478
 Config_ITSU.C:479
 Config_ITSU.C:480
 Config_ITSU.C:481
 Config_ITSU.C:482
 Config_ITSU.C:483
 Config_ITSU.C:484
 Config_ITSU.C:485
 Config_ITSU.C:486
 Config_ITSU.C:487
 Config_ITSU.C:488
 Config_ITSU.C:489
 Config_ITSU.C:490
 Config_ITSU.C:491
 Config_ITSU.C:492
 Config_ITSU.C:493
 Config_ITSU.C:494
 Config_ITSU.C:495
 Config_ITSU.C:496
 Config_ITSU.C:497
 Config_ITSU.C:498
 Config_ITSU.C:499
 Config_ITSU.C:500
 Config_ITSU.C:501
 Config_ITSU.C:502
 Config_ITSU.C:503
 Config_ITSU.C:504
 Config_ITSU.C:505
 Config_ITSU.C:506
 Config_ITSU.C:507
 Config_ITSU.C:508
 Config_ITSU.C:509
 Config_ITSU.C:510
 Config_ITSU.C:511
 Config_ITSU.C:512
 Config_ITSU.C:513
 Config_ITSU.C:514
 Config_ITSU.C:515
 Config_ITSU.C:516
 Config_ITSU.C:517
 Config_ITSU.C:518
 Config_ITSU.C:519
 Config_ITSU.C:520
 Config_ITSU.C:521
 Config_ITSU.C:522
 Config_ITSU.C:523
 Config_ITSU.C:524
 Config_ITSU.C:525
 Config_ITSU.C:526
 Config_ITSU.C:527
 Config_ITSU.C:528
 Config_ITSU.C:529
 Config_ITSU.C:530
 Config_ITSU.C:531
 Config_ITSU.C:532
 Config_ITSU.C:533
 Config_ITSU.C:534
 Config_ITSU.C:535
 Config_ITSU.C:536
 Config_ITSU.C:537
 Config_ITSU.C:538
 Config_ITSU.C:539
 Config_ITSU.C:540
 Config_ITSU.C:541
 Config_ITSU.C:542
 Config_ITSU.C:543
 Config_ITSU.C:544
 Config_ITSU.C:545
 Config_ITSU.C:546
 Config_ITSU.C:547
 Config_ITSU.C:548
 Config_ITSU.C:549
 Config_ITSU.C:550
 Config_ITSU.C:551
 Config_ITSU.C:552
 Config_ITSU.C:553
 Config_ITSU.C:554
 Config_ITSU.C:555
 Config_ITSU.C:556
 Config_ITSU.C:557
 Config_ITSU.C:558
 Config_ITSU.C:559
 Config_ITSU.C:560
 Config_ITSU.C:561
 Config_ITSU.C:562
 Config_ITSU.C:563
 Config_ITSU.C:564
 Config_ITSU.C:565
 Config_ITSU.C:566
 Config_ITSU.C:567
 Config_ITSU.C:568
 Config_ITSU.C:569
 Config_ITSU.C:570
 Config_ITSU.C:571
 Config_ITSU.C:572
 Config_ITSU.C:573
 Config_ITSU.C:574
 Config_ITSU.C:575
 Config_ITSU.C:576
 Config_ITSU.C:577
 Config_ITSU.C:578
 Config_ITSU.C:579
 Config_ITSU.C:580
 Config_ITSU.C:581
 Config_ITSU.C:582
 Config_ITSU.C:583
 Config_ITSU.C:584
 Config_ITSU.C:585
 Config_ITSU.C:586
 Config_ITSU.C:587
 Config_ITSU.C:588
 Config_ITSU.C:589
 Config_ITSU.C:590
 Config_ITSU.C:591
 Config_ITSU.C:592
 Config_ITSU.C:593
 Config_ITSU.C:594
 Config_ITSU.C:595
 Config_ITSU.C:596
 Config_ITSU.C:597
 Config_ITSU.C:598
 Config_ITSU.C:599
 Config_ITSU.C:600
 Config_ITSU.C:601
 Config_ITSU.C:602
 Config_ITSU.C:603
 Config_ITSU.C:604
 Config_ITSU.C:605
 Config_ITSU.C:606
 Config_ITSU.C:607
 Config_ITSU.C:608
 Config_ITSU.C:609
 Config_ITSU.C:610
 Config_ITSU.C:611
 Config_ITSU.C:612
 Config_ITSU.C:613
 Config_ITSU.C:614
 Config_ITSU.C:615
 Config_ITSU.C:616
 Config_ITSU.C:617
 Config_ITSU.C:618
 Config_ITSU.C:619
 Config_ITSU.C:620
 Config_ITSU.C:621
 Config_ITSU.C:622
 Config_ITSU.C:623
 Config_ITSU.C:624
 Config_ITSU.C:625
 Config_ITSU.C:626
 Config_ITSU.C:627
 Config_ITSU.C:628
 Config_ITSU.C:629
 Config_ITSU.C:630
 Config_ITSU.C:631
 Config_ITSU.C:632
 Config_ITSU.C:633
 Config_ITSU.C:634
 Config_ITSU.C:635
 Config_ITSU.C:636
 Config_ITSU.C:637
 Config_ITSU.C:638
 Config_ITSU.C:639
 Config_ITSU.C:640
 Config_ITSU.C:641
 Config_ITSU.C:642
 Config_ITSU.C:643
 Config_ITSU.C:644
 Config_ITSU.C:645
 Config_ITSU.C:646
 Config_ITSU.C:647
 Config_ITSU.C:648
 Config_ITSU.C:649
 Config_ITSU.C:650
 Config_ITSU.C:651
 Config_ITSU.C:652
 Config_ITSU.C:653
 Config_ITSU.C:654
 Config_ITSU.C:655
 Config_ITSU.C:656
 Config_ITSU.C:657
 Config_ITSU.C:658
 Config_ITSU.C:659
 Config_ITSU.C:660
 Config_ITSU.C:661
 Config_ITSU.C:662
 Config_ITSU.C:663
 Config_ITSU.C:664
 Config_ITSU.C:665
 Config_ITSU.C:666
 Config_ITSU.C:667
 Config_ITSU.C:668
 Config_ITSU.C:669
 Config_ITSU.C:670
 Config_ITSU.C:671
 Config_ITSU.C:672
 Config_ITSU.C:673
 Config_ITSU.C:674
 Config_ITSU.C:675
 Config_ITSU.C:676
 Config_ITSU.C:677
 Config_ITSU.C:678
 Config_ITSU.C:679
 Config_ITSU.C:680
 Config_ITSU.C:681
 Config_ITSU.C:682
 Config_ITSU.C:683
 Config_ITSU.C:684
 Config_ITSU.C:685
 Config_ITSU.C:686
 Config_ITSU.C:687
 Config_ITSU.C:688
 Config_ITSU.C:689
 Config_ITSU.C:690
 Config_ITSU.C:691
 Config_ITSU.C:692
 Config_ITSU.C:693
 Config_ITSU.C:694
 Config_ITSU.C:695
 Config_ITSU.C:696
 Config_ITSU.C:697
 Config_ITSU.C:698
 Config_ITSU.C:699
 Config_ITSU.C:700
 Config_ITSU.C:701
 Config_ITSU.C:702
 Config_ITSU.C:703
 Config_ITSU.C:704
 Config_ITSU.C:705
 Config_ITSU.C:706
 Config_ITSU.C:707
 Config_ITSU.C:708
 Config_ITSU.C:709
 Config_ITSU.C:710
 Config_ITSU.C:711
 Config_ITSU.C:712
 Config_ITSU.C:713
 Config_ITSU.C:714
 Config_ITSU.C:715
 Config_ITSU.C:716
 Config_ITSU.C:717
 Config_ITSU.C:718
 Config_ITSU.C:719
 Config_ITSU.C:720
 Config_ITSU.C:721
 Config_ITSU.C:722
 Config_ITSU.C:723
 Config_ITSU.C:724
 Config_ITSU.C:725
 Config_ITSU.C:726
 Config_ITSU.C:727
 Config_ITSU.C:728
 Config_ITSU.C:729
 Config_ITSU.C:730
 Config_ITSU.C:731
 Config_ITSU.C:732
 Config_ITSU.C:733
 Config_ITSU.C:734
 Config_ITSU.C:735
 Config_ITSU.C:736
 Config_ITSU.C:737
 Config_ITSU.C:738
 Config_ITSU.C:739
 Config_ITSU.C:740
 Config_ITSU.C:741
 Config_ITSU.C:742
 Config_ITSU.C:743
 Config_ITSU.C:744
 Config_ITSU.C:745
 Config_ITSU.C:746
 Config_ITSU.C:747
 Config_ITSU.C:748
 Config_ITSU.C:749
 Config_ITSU.C:750
 Config_ITSU.C:751
 Config_ITSU.C:752
 Config_ITSU.C:753
 Config_ITSU.C:754
 Config_ITSU.C:755
 Config_ITSU.C:756
 Config_ITSU.C:757
 Config_ITSU.C:758
 Config_ITSU.C:759
 Config_ITSU.C:760
 Config_ITSU.C:761
 Config_ITSU.C:762
 Config_ITSU.C:763
 Config_ITSU.C:764
 Config_ITSU.C:765
 Config_ITSU.C:766
 Config_ITSU.C:767
 Config_ITSU.C:768
 Config_ITSU.C:769
 Config_ITSU.C:770
 Config_ITSU.C:771
 Config_ITSU.C:772
 Config_ITSU.C:773
 Config_ITSU.C:774
 Config_ITSU.C:775
 Config_ITSU.C:776
 Config_ITSU.C:777
 Config_ITSU.C:778
 Config_ITSU.C:779
 Config_ITSU.C:780
 Config_ITSU.C:781
 Config_ITSU.C:782
 Config_ITSU.C:783
 Config_ITSU.C:784
 Config_ITSU.C:785
 Config_ITSU.C:786
 Config_ITSU.C:787
 Config_ITSU.C:788
 Config_ITSU.C:789
 Config_ITSU.C:790
 Config_ITSU.C:791
 Config_ITSU.C:792
 Config_ITSU.C:793
 Config_ITSU.C:794
 Config_ITSU.C:795
 Config_ITSU.C:796
 Config_ITSU.C:797
 Config_ITSU.C:798
 Config_ITSU.C:799
 Config_ITSU.C:800
 Config_ITSU.C:801
 Config_ITSU.C:802
 Config_ITSU.C:803
 Config_ITSU.C:804
 Config_ITSU.C:805
 Config_ITSU.C:806
 Config_ITSU.C:807
 Config_ITSU.C:808
 Config_ITSU.C:809
 Config_ITSU.C:810
 Config_ITSU.C:811
 Config_ITSU.C:812
 Config_ITSU.C:813
 Config_ITSU.C:814
 Config_ITSU.C:815
 Config_ITSU.C:816
 Config_ITSU.C:817
 Config_ITSU.C:818
 Config_ITSU.C:819
 Config_ITSU.C:820
 Config_ITSU.C:821
 Config_ITSU.C:822
 Config_ITSU.C:823
 Config_ITSU.C:824
 Config_ITSU.C:825
 Config_ITSU.C:826
 Config_ITSU.C:827
 Config_ITSU.C:828
 Config_ITSU.C:829
 Config_ITSU.C:830
 Config_ITSU.C:831
 Config_ITSU.C:832
 Config_ITSU.C:833
 Config_ITSU.C:834
 Config_ITSU.C:835
 Config_ITSU.C:836
 Config_ITSU.C:837
 Config_ITSU.C:838
 Config_ITSU.C:839
 Config_ITSU.C:840
 Config_ITSU.C:841
 Config_ITSU.C:842
 Config_ITSU.C:843
 Config_ITSU.C:844
 Config_ITSU.C:845
 Config_ITSU.C:846
 Config_ITSU.C:847
 Config_ITSU.C:848
 Config_ITSU.C:849
 Config_ITSU.C:850
 Config_ITSU.C:851
 Config_ITSU.C:852
 Config_ITSU.C:853
 Config_ITSU.C:854
 Config_ITSU.C:855
 Config_ITSU.C:856
 Config_ITSU.C:857
 Config_ITSU.C:858
 Config_ITSU.C:859
 Config_ITSU.C:860
 Config_ITSU.C:861
 Config_ITSU.C:862
 Config_ITSU.C:863
 Config_ITSU.C:864
 Config_ITSU.C:865
 Config_ITSU.C:866
 Config_ITSU.C:867
 Config_ITSU.C:868
 Config_ITSU.C:869
 Config_ITSU.C:870
 Config_ITSU.C:871
 Config_ITSU.C:872
 Config_ITSU.C:873
 Config_ITSU.C:874
 Config_ITSU.C:875
 Config_ITSU.C:876
 Config_ITSU.C:877
 Config_ITSU.C:878
 Config_ITSU.C:879
 Config_ITSU.C:880
 Config_ITSU.C:881
 Config_ITSU.C:882
 Config_ITSU.C:883
 Config_ITSU.C:884
 Config_ITSU.C:885
 Config_ITSU.C:886
 Config_ITSU.C:887
 Config_ITSU.C:888
 Config_ITSU.C:889
 Config_ITSU.C:890
 Config_ITSU.C:891
 Config_ITSU.C:892
 Config_ITSU.C:893
 Config_ITSU.C:894
 Config_ITSU.C:895
 Config_ITSU.C:896
 Config_ITSU.C:897
 Config_ITSU.C:898
 Config_ITSU.C:899
 Config_ITSU.C:900
 Config_ITSU.C:901
 Config_ITSU.C:902
 Config_ITSU.C:903
 Config_ITSU.C:904
 Config_ITSU.C:905
 Config_ITSU.C:906
 Config_ITSU.C:907
 Config_ITSU.C:908
 Config_ITSU.C:909
 Config_ITSU.C:910
 Config_ITSU.C:911
 Config_ITSU.C:912
 Config_ITSU.C:913
 Config_ITSU.C:914
 Config_ITSU.C:915
 Config_ITSU.C:916
 Config_ITSU.C:917
 Config_ITSU.C:918
 Config_ITSU.C:919
 Config_ITSU.C:920
 Config_ITSU.C:921
 Config_ITSU.C:922
 Config_ITSU.C:923
 Config_ITSU.C:924
 Config_ITSU.C:925
 Config_ITSU.C:926
 Config_ITSU.C:927
 Config_ITSU.C:928
 Config_ITSU.C:929
 Config_ITSU.C:930
 Config_ITSU.C:931
 Config_ITSU.C:932
 Config_ITSU.C:933
 Config_ITSU.C:934
 Config_ITSU.C:935
 Config_ITSU.C:936
 Config_ITSU.C:937
 Config_ITSU.C:938
 Config_ITSU.C:939
 Config_ITSU.C:940
 Config_ITSU.C:941
 Config_ITSU.C:942
 Config_ITSU.C:943
 Config_ITSU.C:944
 Config_ITSU.C:945
 Config_ITSU.C:946
 Config_ITSU.C:947
 Config_ITSU.C:948
 Config_ITSU.C:949
 Config_ITSU.C:950
 Config_ITSU.C:951
 Config_ITSU.C:952
 Config_ITSU.C:953
 Config_ITSU.C:954
 Config_ITSU.C:955
 Config_ITSU.C:956
 Config_ITSU.C:957
 Config_ITSU.C:958
 Config_ITSU.C:959
 Config_ITSU.C:960
 Config_ITSU.C:961
 Config_ITSU.C:962
 Config_ITSU.C:963
 Config_ITSU.C:964
 Config_ITSU.C:965
 Config_ITSU.C:966
 Config_ITSU.C:967
 Config_ITSU.C:968
 Config_ITSU.C:969
 Config_ITSU.C:970
 Config_ITSU.C:971
 Config_ITSU.C:972
 Config_ITSU.C:973
 Config_ITSU.C:974
 Config_ITSU.C:975
 Config_ITSU.C:976
 Config_ITSU.C:977
 Config_ITSU.C:978
 Config_ITSU.C:979
 Config_ITSU.C:980
 Config_ITSU.C:981
 Config_ITSU.C:982
 Config_ITSU.C:983
 Config_ITSU.C:984
 Config_ITSU.C:985
 Config_ITSU.C:986
 Config_ITSU.C:987
 Config_ITSU.C:988
 Config_ITSU.C:989
 Config_ITSU.C:990
 Config_ITSU.C:991
 Config_ITSU.C:992
 Config_ITSU.C:993
 Config_ITSU.C:994
 Config_ITSU.C:995
 Config_ITSU.C:996
 Config_ITSU.C:997
 Config_ITSU.C:998
 Config_ITSU.C:999
 Config_ITSU.C:1000
 Config_ITSU.C:1001
 Config_ITSU.C:1002
 Config_ITSU.C:1003
 Config_ITSU.C:1004
 Config_ITSU.C:1005
 Config_ITSU.C:1006
 Config_ITSU.C:1007
 Config_ITSU.C:1008
 Config_ITSU.C:1009
 Config_ITSU.C:1010
 Config_ITSU.C:1011
 Config_ITSU.C:1012
 Config_ITSU.C:1013
 Config_ITSU.C:1014
 Config_ITSU.C:1015
 Config_ITSU.C:1016
 Config_ITSU.C:1017
 Config_ITSU.C:1018
 Config_ITSU.C:1019
 Config_ITSU.C:1020
 Config_ITSU.C:1021
 Config_ITSU.C:1022
 Config_ITSU.C:1023
 Config_ITSU.C:1024
 Config_ITSU.C:1025
 Config_ITSU.C:1026
 Config_ITSU.C:1027
 Config_ITSU.C:1028
 Config_ITSU.C:1029
 Config_ITSU.C:1030
 Config_ITSU.C:1031
 Config_ITSU.C:1032
 Config_ITSU.C:1033
 Config_ITSU.C:1034
 Config_ITSU.C:1035
 Config_ITSU.C:1036
 Config_ITSU.C:1037
 Config_ITSU.C:1038
 Config_ITSU.C:1039
 Config_ITSU.C:1040
 Config_ITSU.C:1041
 Config_ITSU.C:1042
 Config_ITSU.C:1043
 Config_ITSU.C:1044
 Config_ITSU.C:1045
 Config_ITSU.C:1046
 Config_ITSU.C:1047
 Config_ITSU.C:1048
 Config_ITSU.C:1049
 Config_ITSU.C:1050
 Config_ITSU.C:1051
 Config_ITSU.C:1052
 Config_ITSU.C:1053
 Config_ITSU.C:1054
 Config_ITSU.C:1055
 Config_ITSU.C:1056
 Config_ITSU.C:1057
 Config_ITSU.C:1058
 Config_ITSU.C:1059
 Config_ITSU.C:1060
 Config_ITSU.C:1061
 Config_ITSU.C:1062
 Config_ITSU.C:1063
 Config_ITSU.C:1064
 Config_ITSU.C:1065
 Config_ITSU.C:1066
 Config_ITSU.C:1067
 Config_ITSU.C:1068
 Config_ITSU.C:1069
 Config_ITSU.C:1070
 Config_ITSU.C:1071
 Config_ITSU.C:1072
 Config_ITSU.C:1073
 Config_ITSU.C:1074
 Config_ITSU.C:1075
 Config_ITSU.C:1076
 Config_ITSU.C:1077
 Config_ITSU.C:1078
 Config_ITSU.C:1079
 Config_ITSU.C:1080
 Config_ITSU.C:1081
 Config_ITSU.C:1082
 Config_ITSU.C:1083
 Config_ITSU.C:1084
 Config_ITSU.C:1085
 Config_ITSU.C:1086
 Config_ITSU.C:1087
 Config_ITSU.C:1088
 Config_ITSU.C:1089
 Config_ITSU.C:1090
 Config_ITSU.C:1091
 Config_ITSU.C:1092
 Config_ITSU.C:1093
 Config_ITSU.C:1094
 Config_ITSU.C:1095
 Config_ITSU.C:1096
 Config_ITSU.C:1097
 Config_ITSU.C:1098
 Config_ITSU.C:1099
 Config_ITSU.C:1100
 Config_ITSU.C:1101
 Config_ITSU.C:1102
 Config_ITSU.C:1103
 Config_ITSU.C:1104
 Config_ITSU.C:1105
 Config_ITSU.C:1106
 Config_ITSU.C:1107
 Config_ITSU.C:1108
 Config_ITSU.C:1109
 Config_ITSU.C:1110
 Config_ITSU.C:1111
 Config_ITSU.C:1112
 Config_ITSU.C:1113
 Config_ITSU.C:1114
 Config_ITSU.C:1115
 Config_ITSU.C:1116
 Config_ITSU.C:1117
 Config_ITSU.C:1118
 Config_ITSU.C:1119
 Config_ITSU.C:1120
 Config_ITSU.C:1121
 Config_ITSU.C:1122
 Config_ITSU.C:1123
 Config_ITSU.C:1124
 Config_ITSU.C:1125
 Config_ITSU.C:1126
 Config_ITSU.C:1127
 Config_ITSU.C:1128
 Config_ITSU.C:1129
 Config_ITSU.C:1130
 Config_ITSU.C:1131
 Config_ITSU.C:1132
 Config_ITSU.C:1133
 Config_ITSU.C:1134
 Config_ITSU.C:1135
 Config_ITSU.C:1136
 Config_ITSU.C:1137
 Config_ITSU.C:1138
 Config_ITSU.C:1139
 Config_ITSU.C:1140
 Config_ITSU.C:1141
 Config_ITSU.C:1142
 Config_ITSU.C:1143
 Config_ITSU.C:1144
 Config_ITSU.C:1145
 Config_ITSU.C:1146
 Config_ITSU.C:1147
 Config_ITSU.C:1148
 Config_ITSU.C:1149
 Config_ITSU.C:1150
 Config_ITSU.C:1151
 Config_ITSU.C:1152
 Config_ITSU.C:1153
 Config_ITSU.C:1154
 Config_ITSU.C:1155
 Config_ITSU.C:1156
 Config_ITSU.C:1157
 Config_ITSU.C:1158
 Config_ITSU.C:1159
 Config_ITSU.C:1160
 Config_ITSU.C:1161
 Config_ITSU.C:1162
 Config_ITSU.C:1163
 Config_ITSU.C:1164
 Config_ITSU.C:1165
 Config_ITSU.C:1166
 Config_ITSU.C:1167
 Config_ITSU.C:1168
 Config_ITSU.C:1169
 Config_ITSU.C:1170
 Config_ITSU.C:1171
 Config_ITSU.C:1172
 Config_ITSU.C:1173
 Config_ITSU.C:1174
 Config_ITSU.C:1175
 Config_ITSU.C:1176
 Config_ITSU.C:1177
 Config_ITSU.C:1178
 Config_ITSU.C:1179
 Config_ITSU.C:1180
 Config_ITSU.C:1181
 Config_ITSU.C:1182
 Config_ITSU.C:1183
 Config_ITSU.C:1184
 Config_ITSU.C:1185
 Config_ITSU.C:1186
 Config_ITSU.C:1187
 Config_ITSU.C:1188
 Config_ITSU.C:1189
 Config_ITSU.C:1190
 Config_ITSU.C:1191
 Config_ITSU.C:1192
 Config_ITSU.C:1193
 Config_ITSU.C:1194
 Config_ITSU.C:1195
 Config_ITSU.C:1196
 Config_ITSU.C:1197
 Config_ITSU.C:1198
 Config_ITSU.C:1199
 Config_ITSU.C:1200
 Config_ITSU.C:1201
 Config_ITSU.C:1202
 Config_ITSU.C:1203
 Config_ITSU.C:1204
 Config_ITSU.C:1205
 Config_ITSU.C:1206
 Config_ITSU.C:1207
 Config_ITSU.C:1208
 Config_ITSU.C:1209
 Config_ITSU.C:1210
 Config_ITSU.C:1211
 Config_ITSU.C:1212
 Config_ITSU.C:1213
 Config_ITSU.C:1214
 Config_ITSU.C:1215
 Config_ITSU.C:1216
 Config_ITSU.C:1217
 Config_ITSU.C:1218
 Config_ITSU.C:1219
 Config_ITSU.C:1220
 Config_ITSU.C:1221
 Config_ITSU.C:1222
 Config_ITSU.C:1223
 Config_ITSU.C:1224
 Config_ITSU.C:1225
 Config_ITSU.C:1226
 Config_ITSU.C:1227
 Config_ITSU.C:1228
 Config_ITSU.C:1229
 Config_ITSU.C:1230
 Config_ITSU.C:1231
 Config_ITSU.C:1232
 Config_ITSU.C:1233
 Config_ITSU.C:1234
 Config_ITSU.C:1235
 Config_ITSU.C:1236
 Config_ITSU.C:1237
 Config_ITSU.C:1238
 Config_ITSU.C:1239
 Config_ITSU.C:1240
 Config_ITSU.C:1241
 Config_ITSU.C:1242
 Config_ITSU.C:1243
 Config_ITSU.C:1244
 Config_ITSU.C:1245
 Config_ITSU.C:1246
 Config_ITSU.C:1247
 Config_ITSU.C:1248
 Config_ITSU.C:1249
 Config_ITSU.C:1250
 Config_ITSU.C:1251
 Config_ITSU.C:1252
 Config_ITSU.C:1253
 Config_ITSU.C:1254
 Config_ITSU.C:1255
 Config_ITSU.C:1256
 Config_ITSU.C:1257
 Config_ITSU.C:1258
 Config_ITSU.C:1259
 Config_ITSU.C:1260
 Config_ITSU.C:1261
 Config_ITSU.C:1262
 Config_ITSU.C:1263
 Config_ITSU.C:1264
 Config_ITSU.C:1265
 Config_ITSU.C:1266
 Config_ITSU.C:1267
 Config_ITSU.C:1268
 Config_ITSU.C:1269
 Config_ITSU.C:1270
 Config_ITSU.C:1271
 Config_ITSU.C:1272
 Config_ITSU.C:1273
 Config_ITSU.C:1274
 Config_ITSU.C:1275
 Config_ITSU.C:1276
 Config_ITSU.C:1277
 Config_ITSU.C:1278
 Config_ITSU.C:1279
 Config_ITSU.C:1280
 Config_ITSU.C:1281
 Config_ITSU.C:1282
 Config_ITSU.C:1283
 Config_ITSU.C:1284
 Config_ITSU.C:1285
 Config_ITSU.C:1286
 Config_ITSU.C:1287
 Config_ITSU.C:1288
 Config_ITSU.C:1289
 Config_ITSU.C:1290
 Config_ITSU.C:1291
 Config_ITSU.C:1292
 Config_ITSU.C:1293
 Config_ITSU.C:1294
 Config_ITSU.C:1295
 Config_ITSU.C:1296
 Config_ITSU.C:1297
 Config_ITSU.C:1298
 Config_ITSU.C:1299
 Config_ITSU.C:1300
 Config_ITSU.C:1301
 Config_ITSU.C:1302
 Config_ITSU.C:1303
 Config_ITSU.C:1304
 Config_ITSU.C:1305
 Config_ITSU.C:1306
 Config_ITSU.C:1307
 Config_ITSU.C:1308
 Config_ITSU.C:1309
 Config_ITSU.C:1310
 Config_ITSU.C:1311
 Config_ITSU.C:1312
 Config_ITSU.C:1313
 Config_ITSU.C:1314
 Config_ITSU.C:1315
 Config_ITSU.C:1316
 Config_ITSU.C:1317
 Config_ITSU.C:1318
 Config_ITSU.C:1319
 Config_ITSU.C:1320
 Config_ITSU.C:1321
 Config_ITSU.C:1322
 Config_ITSU.C:1323
 Config_ITSU.C:1324
 Config_ITSU.C:1325
 Config_ITSU.C:1326
 Config_ITSU.C:1327
 Config_ITSU.C:1328
 Config_ITSU.C:1329
 Config_ITSU.C:1330
 Config_ITSU.C:1331
 Config_ITSU.C:1332
 Config_ITSU.C:1333
 Config_ITSU.C:1334
 Config_ITSU.C:1335
 Config_ITSU.C:1336
 Config_ITSU.C:1337
 Config_ITSU.C:1338
 Config_ITSU.C:1339
 Config_ITSU.C:1340
 Config_ITSU.C:1341
 Config_ITSU.C:1342
 Config_ITSU.C:1343
 Config_ITSU.C:1344
 Config_ITSU.C:1345
 Config_ITSU.C:1346
 Config_ITSU.C:1347
 Config_ITSU.C:1348
 Config_ITSU.C:1349
 Config_ITSU.C:1350
 Config_ITSU.C:1351
 Config_ITSU.C:1352
 Config_ITSU.C:1353
 Config_ITSU.C:1354
 Config_ITSU.C:1355
 Config_ITSU.C:1356
 Config_ITSU.C:1357
 Config_ITSU.C:1358
 Config_ITSU.C:1359
 Config_ITSU.C:1360
 Config_ITSU.C:1361
 Config_ITSU.C:1362
 Config_ITSU.C:1363
 Config_ITSU.C:1364
 Config_ITSU.C:1365
 Config_ITSU.C:1366
 Config_ITSU.C:1367
 Config_ITSU.C:1368
 Config_ITSU.C:1369
 Config_ITSU.C:1370
 Config_ITSU.C:1371
 Config_ITSU.C:1372
 Config_ITSU.C:1373
 Config_ITSU.C:1374
 Config_ITSU.C:1375
 Config_ITSU.C:1376
 Config_ITSU.C:1377
 Config_ITSU.C:1378
 Config_ITSU.C:1379
 Config_ITSU.C:1380
 Config_ITSU.C:1381
 Config_ITSU.C:1382
 Config_ITSU.C:1383
 Config_ITSU.C:1384
 Config_ITSU.C:1385
 Config_ITSU.C:1386
 Config_ITSU.C:1387
 Config_ITSU.C:1388
 Config_ITSU.C:1389
 Config_ITSU.C:1390
 Config_ITSU.C:1391
 Config_ITSU.C:1392
 Config_ITSU.C:1393
 Config_ITSU.C:1394
 Config_ITSU.C:1395
 Config_ITSU.C:1396
 Config_ITSU.C:1397
 Config_ITSU.C:1398
 Config_ITSU.C:1399
 Config_ITSU.C:1400
 Config_ITSU.C:1401
 Config_ITSU.C:1402
 Config_ITSU.C:1403
 Config_ITSU.C:1404
 Config_ITSU.C:1405
 Config_ITSU.C:1406
 Config_ITSU.C:1407
 Config_ITSU.C:1408
 Config_ITSU.C:1409
 Config_ITSU.C:1410
 Config_ITSU.C:1411
 Config_ITSU.C:1412
 Config_ITSU.C:1413
 Config_ITSU.C:1414
 Config_ITSU.C:1415
 Config_ITSU.C:1416
 Config_ITSU.C:1417
 Config_ITSU.C:1418
 Config_ITSU.C:1419
 Config_ITSU.C:1420
 Config_ITSU.C:1421
 Config_ITSU.C:1422
 Config_ITSU.C:1423
 Config_ITSU.C:1424
 Config_ITSU.C:1425
 Config_ITSU.C:1426
 Config_ITSU.C:1427
 Config_ITSU.C:1428
 Config_ITSU.C:1429
 Config_ITSU.C:1430
 Config_ITSU.C:1431
 Config_ITSU.C:1432
 Config_ITSU.C:1433
 Config_ITSU.C:1434
 Config_ITSU.C:1435
 Config_ITSU.C:1436
 Config_ITSU.C:1437
 Config_ITSU.C:1438
 Config_ITSU.C:1439
 Config_ITSU.C:1440
 Config_ITSU.C:1441
 Config_ITSU.C:1442
 Config_ITSU.C:1443
 Config_ITSU.C:1444
 Config_ITSU.C:1445
 Config_ITSU.C:1446
 Config_ITSU.C:1447
 Config_ITSU.C:1448
 Config_ITSU.C:1449
 Config_ITSU.C:1450
 Config_ITSU.C:1451
 Config_ITSU.C:1452
 Config_ITSU.C:1453
 Config_ITSU.C:1454
 Config_ITSU.C:1455
 Config_ITSU.C:1456
 Config_ITSU.C:1457
 Config_ITSU.C:1458
 Config_ITSU.C:1459
 Config_ITSU.C:1460
 Config_ITSU.C:1461
 Config_ITSU.C:1462
 Config_ITSU.C:1463
 Config_ITSU.C:1464
 Config_ITSU.C:1465
 Config_ITSU.C:1466
 Config_ITSU.C:1467
 Config_ITSU.C:1468
 Config_ITSU.C:1469
 Config_ITSU.C:1470
 Config_ITSU.C:1471
 Config_ITSU.C:1472
 Config_ITSU.C:1473
 Config_ITSU.C:1474
 Config_ITSU.C:1475
 Config_ITSU.C:1476
 Config_ITSU.C:1477
 Config_ITSU.C:1478
 Config_ITSU.C:1479
 Config_ITSU.C:1480
 Config_ITSU.C:1481
 Config_ITSU.C:1482
 Config_ITSU.C:1483
 Config_ITSU.C:1484
 Config_ITSU.C:1485
 Config_ITSU.C:1486
 Config_ITSU.C:1487
 Config_ITSU.C:1488
 Config_ITSU.C:1489
 Config_ITSU.C:1490
 Config_ITSU.C:1491
 Config_ITSU.C:1492
 Config_ITSU.C:1493
 Config_ITSU.C:1494
 Config_ITSU.C:1495
 Config_ITSU.C:1496
 Config_ITSU.C:1497
 Config_ITSU.C:1498
 Config_ITSU.C:1499
 Config_ITSU.C:1500
 Config_ITSU.C:1501
 Config_ITSU.C:1502
 Config_ITSU.C:1503
 Config_ITSU.C:1504
 Config_ITSU.C:1505
 Config_ITSU.C:1506
 Config_ITSU.C:1507
 Config_ITSU.C:1508
 Config_ITSU.C:1509
 Config_ITSU.C:1510
 Config_ITSU.C:1511
 Config_ITSU.C:1512
 Config_ITSU.C:1513
 Config_ITSU.C:1514
 Config_ITSU.C:1515
 Config_ITSU.C:1516
 Config_ITSU.C:1517
 Config_ITSU.C:1518
 Config_ITSU.C:1519
 Config_ITSU.C:1520
 Config_ITSU.C:1521
 Config_ITSU.C:1522
 Config_ITSU.C:1523
 Config_ITSU.C:1524
 Config_ITSU.C:1525
 Config_ITSU.C:1526
 Config_ITSU.C:1527
 Config_ITSU.C:1528
 Config_ITSU.C:1529
 Config_ITSU.C:1530
 Config_ITSU.C:1531
 Config_ITSU.C:1532
 Config_ITSU.C:1533
 Config_ITSU.C:1534
 Config_ITSU.C:1535
 Config_ITSU.C:1536
 Config_ITSU.C:1537
 Config_ITSU.C:1538
 Config_ITSU.C:1539
 Config_ITSU.C:1540
 Config_ITSU.C:1541
 Config_ITSU.C:1542
 Config_ITSU.C:1543
 Config_ITSU.C:1544
 Config_ITSU.C:1545
 Config_ITSU.C:1546
 Config_ITSU.C:1547
 Config_ITSU.C:1548
 Config_ITSU.C:1549
 Config_ITSU.C:1550
 Config_ITSU.C:1551
 Config_ITSU.C:1552
 Config_ITSU.C:1553
 Config_ITSU.C:1554
 Config_ITSU.C:1555
 Config_ITSU.C:1556
 Config_ITSU.C:1557
 Config_ITSU.C:1558
 Config_ITSU.C:1559
 Config_ITSU.C:1560
 Config_ITSU.C:1561
 Config_ITSU.C:1562
 Config_ITSU.C:1563
 Config_ITSU.C:1564
 Config_ITSU.C:1565
 Config_ITSU.C:1566
 Config_ITSU.C:1567
 Config_ITSU.C:1568
 Config_ITSU.C:1569
 Config_ITSU.C:1570
 Config_ITSU.C:1571
 Config_ITSU.C:1572
 Config_ITSU.C:1573
 Config_ITSU.C:1574
 Config_ITSU.C:1575
 Config_ITSU.C:1576
 Config_ITSU.C:1577
 Config_ITSU.C:1578