ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TRandom.h>
#include <TDatime.h>
#include <TSystem.h>
#include <TVirtualMC.h>
#include <TGeant3.h>
#include "STEER/AliRunLoader.h"
#include "STEER/AliRun.h"
#include "STEER/AliConfig.h"
#include "PYTHIA6/AliDecayerPythia.h"
#include "PYTHIA6/AliGenPythia.h"
#include "STEER/AliMagFCM.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 "TPC/AliTPCv2.h"
#include "TOF/AliTOFv6T0.h"
#include "HMPID/AliHMPIDv3.h"
#include "ZDC/AliZDCv3.h"
#include "TRD/AliTRDv1.h"
#include "FMD/AliFMDv0.h"
#include "MUON/AliMUONv1.h"
#include "PHOS/AliPHOSv1.h"
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "ACORDE/AliACORDEv1.h"
#endif

void LoadPythia();

void Config()
{
 
  //
  // Set Random Number seed
  TDatime dt;
  UInt_t curtime=dt.Get();
  UInt_t procid=gSystem->GetPid();
  UInt_t seed=curtime-procid;

  //  gRandom->SetSeed(seed);
  gRandom->SetSeed(12345);
  cerr<<"Seed for random number generation= "<<seed<<endl; 
  // Load Pythia libraries
  LoadPythia();
  // libraries required by geant321
#if defined(__CINT__)
  gSystem->Load("libgeant321");
#endif

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

  //=======================================================================
  //  Create the output file
   
  if(!AliCDBManager::Instance()->IsDefaultStorageSet()){
    AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    AliCDBManager::Instance()->SetRun(0);
  }
  
  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(3);
  gAlice->SetRunLoader(rl);
  // gAlice->SetGeometryFromFile("geometry.root");
  // gAlice->SetGeometryFromCDB();

  // Set the trigger configuration
  AliSimulation::Instance()->SetTriggerConfig("Pb-Pb");
  cout<<"Trigger configuration is set to  Pb-Pb"<<endl;

  //
  // Set External decayer
  AliDecayer* decayer = new AliDecayerPythia();
  decayer->SetForceDecay(kAll);
  decayer->Init();
  gMC->SetExternalDecayer(decayer);


  //
  //=======================================================================
  // ************* 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); 


  // AliGenPythia *gener = new AliGenPythia(ntracks);
  AliGenPythia *gener = new AliGenPythia(-1);

  gener->SetMomentumRange(0,999);
  gener->SetPhiRange(0.,360.);
  gener->SetThetaRange(0,180);
  gener->SetYRange(-999,999);
  //gener->SetPtRange(0,100);
  gener->SetOrigin(0,0,0);          // vertex position
  //gener->SetVertexSmear(kPerEvent); 
  gener->SetSigma(0,0,5.3);  // Sigma in (X,Y,Z) (cm) on IP position
  gener->SetTrackingFlag(0);
  // gener->SetForceDecay(kHadronicD);

  //
  // The following settings select the Pythia parameters tuned to agree
  // with beauty NLO calculation for Pb-Pb @ 5.5 TeV with MNR code.
  //
  gener->SetProcess(kPyBeautyPbPbMNR);
  gener->SetStrucFunc(kCTEQ4L);
  gener->SetPtHard(2.75,-1.0);
  gener->SetEnergyCMS(5500.);
  gener->SetNuclei(208,208); // Pb-Pb collisions
  // Force no decay heavy quark mesons
  gener->SetForceDecay(kNoDecayHeavy);

  gener->Init();
  // 
  // Activate this line if you want the vertex smearing to happen
  // track by track
  //
  //gener->SetVertexSmear(perTrack); 

  // Field (L3 0.4 T)
  AliMagFCM* field = new AliMagFCM(
	      "Map2","$(ALICE_ROOT)/data/field01.dat", 2, 1., 10.);
  field->SetSolenoidField(4.);
  gAlice->SetField(field);    

  Int_t iABSO=0;
  Int_t iACORDE=0;
  Int_t iDIPO=0;
  Int_t iFMD=0;
  Int_t iFRAME=0;
  Int_t iHALL=0;
  Int_t iITS=0;
  Int_t iMAG=0;
  Int_t iMUON=0;
  Int_t iPHOS=0;
  Int_t iPIPE=0;
  Int_t iPMD=0;
  Int_t iHMPID=0;
  Int_t iSHIL=0;
  Int_t iT0=0;
  Int_t iTOF=0;
  Int_t iTPC=0;
  Int_t iTRD=0;
  Int_t iZDC=0;

  //=================== 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 ============================

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

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

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


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

    AliPIPE *PIPE  = new AliPIPEv3("PIPE","Beam Pipe");
  }


  if(iITS) {
    //=================== ITS parameters ============================

    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");
  }

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

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

  if(iTRD) {
    //=================== TRD parameters ============================
  
    AliTRD *TRD  = new AliTRDv1("TRD","TRD slow simulator");
  }

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

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

  if(iMUON) {
    //=================== MUON parameters ===========================
    AliMUON *MUON  = new AliMUONv1("MUON","default");
  }
 
  //=================== PHOS parameters ===========================

  if(iPHOS) {
    AliPHOS *PHOS  = new AliPHOSv1("PHOS","GPS2");
  }


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

    AliPMD *PMD  = new AliPMDv1("PMD","normal PMD");
    PMD->SetPAR(1., 1., 0.8, 0.02);
    PMD->SetIN(6., 18., -580., 27., 27.);
    PMD->SetGEO(0.0, 0.2, 4.);
    PMD->SetPadSize(0.8, 1.0, 1.0, 1.5);

  }

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

         
}


void LoadPythia()
{
    // Load Pythia related libraries
    gSystem->Load("liblhapdf.so");      // Parton density functions
    gSystem->Load("libEGPythia6.so");   // TGenerator interface
    gSystem->Load("libpythia6.so");     // Pythia
    gSystem->Load("libAliPythia6.so");  // ALICE specific implementations
}
 ConfigBeautyPPR.C:1
 ConfigBeautyPPR.C:2
 ConfigBeautyPPR.C:3
 ConfigBeautyPPR.C:4
 ConfigBeautyPPR.C:5
 ConfigBeautyPPR.C:6
 ConfigBeautyPPR.C:7
 ConfigBeautyPPR.C:8
 ConfigBeautyPPR.C:9
 ConfigBeautyPPR.C:10
 ConfigBeautyPPR.C:11
 ConfigBeautyPPR.C:12
 ConfigBeautyPPR.C:13
 ConfigBeautyPPR.C:14
 ConfigBeautyPPR.C:15
 ConfigBeautyPPR.C:16
 ConfigBeautyPPR.C:17
 ConfigBeautyPPR.C:18
 ConfigBeautyPPR.C:19
 ConfigBeautyPPR.C:20
 ConfigBeautyPPR.C:21
 ConfigBeautyPPR.C:22
 ConfigBeautyPPR.C:23
 ConfigBeautyPPR.C:24
 ConfigBeautyPPR.C:25
 ConfigBeautyPPR.C:26
 ConfigBeautyPPR.C:27
 ConfigBeautyPPR.C:28
 ConfigBeautyPPR.C:29
 ConfigBeautyPPR.C:30
 ConfigBeautyPPR.C:31
 ConfigBeautyPPR.C:32
 ConfigBeautyPPR.C:33
 ConfigBeautyPPR.C:34
 ConfigBeautyPPR.C:35
 ConfigBeautyPPR.C:36
 ConfigBeautyPPR.C:37
 ConfigBeautyPPR.C:38
 ConfigBeautyPPR.C:39
 ConfigBeautyPPR.C:40
 ConfigBeautyPPR.C:41
 ConfigBeautyPPR.C:42
 ConfigBeautyPPR.C:43
 ConfigBeautyPPR.C:44
 ConfigBeautyPPR.C:45
 ConfigBeautyPPR.C:46
 ConfigBeautyPPR.C:47
 ConfigBeautyPPR.C:48
 ConfigBeautyPPR.C:49
 ConfigBeautyPPR.C:50
 ConfigBeautyPPR.C:51
 ConfigBeautyPPR.C:52
 ConfigBeautyPPR.C:53
 ConfigBeautyPPR.C:54
 ConfigBeautyPPR.C:55
 ConfigBeautyPPR.C:56
 ConfigBeautyPPR.C:57
 ConfigBeautyPPR.C:58
 ConfigBeautyPPR.C:59
 ConfigBeautyPPR.C:60
 ConfigBeautyPPR.C:61
 ConfigBeautyPPR.C:62
 ConfigBeautyPPR.C:63
 ConfigBeautyPPR.C:64
 ConfigBeautyPPR.C:65
 ConfigBeautyPPR.C:66
 ConfigBeautyPPR.C:67
 ConfigBeautyPPR.C:68
 ConfigBeautyPPR.C:69
 ConfigBeautyPPR.C:70
 ConfigBeautyPPR.C:71
 ConfigBeautyPPR.C:72
 ConfigBeautyPPR.C:73
 ConfigBeautyPPR.C:74
 ConfigBeautyPPR.C:75
 ConfigBeautyPPR.C:76
 ConfigBeautyPPR.C:77
 ConfigBeautyPPR.C:78
 ConfigBeautyPPR.C:79
 ConfigBeautyPPR.C:80
 ConfigBeautyPPR.C:81
 ConfigBeautyPPR.C:82
 ConfigBeautyPPR.C:83
 ConfigBeautyPPR.C:84
 ConfigBeautyPPR.C:85
 ConfigBeautyPPR.C:86
 ConfigBeautyPPR.C:87
 ConfigBeautyPPR.C:88
 ConfigBeautyPPR.C:89
 ConfigBeautyPPR.C:90
 ConfigBeautyPPR.C:91
 ConfigBeautyPPR.C:92
 ConfigBeautyPPR.C:93
 ConfigBeautyPPR.C:94
 ConfigBeautyPPR.C:95
 ConfigBeautyPPR.C:96
 ConfigBeautyPPR.C:97
 ConfigBeautyPPR.C:98
 ConfigBeautyPPR.C:99
 ConfigBeautyPPR.C:100
 ConfigBeautyPPR.C:101
 ConfigBeautyPPR.C:102
 ConfigBeautyPPR.C:103
 ConfigBeautyPPR.C:104
 ConfigBeautyPPR.C:105
 ConfigBeautyPPR.C:106
 ConfigBeautyPPR.C:107
 ConfigBeautyPPR.C:108
 ConfigBeautyPPR.C:109
 ConfigBeautyPPR.C:110
 ConfigBeautyPPR.C:111
 ConfigBeautyPPR.C:112
 ConfigBeautyPPR.C:113
 ConfigBeautyPPR.C:114
 ConfigBeautyPPR.C:115
 ConfigBeautyPPR.C:116
 ConfigBeautyPPR.C:117
 ConfigBeautyPPR.C:118
 ConfigBeautyPPR.C:119
 ConfigBeautyPPR.C:120
 ConfigBeautyPPR.C:121
 ConfigBeautyPPR.C:122
 ConfigBeautyPPR.C:123
 ConfigBeautyPPR.C:124
 ConfigBeautyPPR.C:125
 ConfigBeautyPPR.C:126
 ConfigBeautyPPR.C:127
 ConfigBeautyPPR.C:128
 ConfigBeautyPPR.C:129
 ConfigBeautyPPR.C:130
 ConfigBeautyPPR.C:131
 ConfigBeautyPPR.C:132
 ConfigBeautyPPR.C:133
 ConfigBeautyPPR.C:134
 ConfigBeautyPPR.C:135
 ConfigBeautyPPR.C:136
 ConfigBeautyPPR.C:137
 ConfigBeautyPPR.C:138
 ConfigBeautyPPR.C:139
 ConfigBeautyPPR.C:140
 ConfigBeautyPPR.C:141
 ConfigBeautyPPR.C:142
 ConfigBeautyPPR.C:143
 ConfigBeautyPPR.C:144
 ConfigBeautyPPR.C:145
 ConfigBeautyPPR.C:146
 ConfigBeautyPPR.C:147
 ConfigBeautyPPR.C:148
 ConfigBeautyPPR.C:149
 ConfigBeautyPPR.C:150
 ConfigBeautyPPR.C:151
 ConfigBeautyPPR.C:152
 ConfigBeautyPPR.C:153
 ConfigBeautyPPR.C:154
 ConfigBeautyPPR.C:155
 ConfigBeautyPPR.C:156
 ConfigBeautyPPR.C:157
 ConfigBeautyPPR.C:158
 ConfigBeautyPPR.C:159
 ConfigBeautyPPR.C:160
 ConfigBeautyPPR.C:161
 ConfigBeautyPPR.C:162
 ConfigBeautyPPR.C:163
 ConfigBeautyPPR.C:164
 ConfigBeautyPPR.C:165
 ConfigBeautyPPR.C:166
 ConfigBeautyPPR.C:167
 ConfigBeautyPPR.C:168
 ConfigBeautyPPR.C:169
 ConfigBeautyPPR.C:170
 ConfigBeautyPPR.C:171
 ConfigBeautyPPR.C:172
 ConfigBeautyPPR.C:173
 ConfigBeautyPPR.C:174
 ConfigBeautyPPR.C:175
 ConfigBeautyPPR.C:176
 ConfigBeautyPPR.C:177
 ConfigBeautyPPR.C:178
 ConfigBeautyPPR.C:179
 ConfigBeautyPPR.C:180
 ConfigBeautyPPR.C:181
 ConfigBeautyPPR.C:182
 ConfigBeautyPPR.C:183
 ConfigBeautyPPR.C:184
 ConfigBeautyPPR.C:185
 ConfigBeautyPPR.C:186
 ConfigBeautyPPR.C:187
 ConfigBeautyPPR.C:188
 ConfigBeautyPPR.C:189
 ConfigBeautyPPR.C:190
 ConfigBeautyPPR.C:191
 ConfigBeautyPPR.C:192
 ConfigBeautyPPR.C:193
 ConfigBeautyPPR.C:194
 ConfigBeautyPPR.C:195
 ConfigBeautyPPR.C:196
 ConfigBeautyPPR.C:197
 ConfigBeautyPPR.C:198
 ConfigBeautyPPR.C:199
 ConfigBeautyPPR.C:200
 ConfigBeautyPPR.C:201
 ConfigBeautyPPR.C:202
 ConfigBeautyPPR.C:203
 ConfigBeautyPPR.C:204
 ConfigBeautyPPR.C:205
 ConfigBeautyPPR.C:206
 ConfigBeautyPPR.C:207
 ConfigBeautyPPR.C:208
 ConfigBeautyPPR.C:209
 ConfigBeautyPPR.C:210
 ConfigBeautyPPR.C:211
 ConfigBeautyPPR.C:212
 ConfigBeautyPPR.C:213
 ConfigBeautyPPR.C:214
 ConfigBeautyPPR.C:215
 ConfigBeautyPPR.C:216
 ConfigBeautyPPR.C:217
 ConfigBeautyPPR.C:218
 ConfigBeautyPPR.C:219
 ConfigBeautyPPR.C:220
 ConfigBeautyPPR.C:221
 ConfigBeautyPPR.C:222
 ConfigBeautyPPR.C:223
 ConfigBeautyPPR.C:224
 ConfigBeautyPPR.C:225
 ConfigBeautyPPR.C:226
 ConfigBeautyPPR.C:227
 ConfigBeautyPPR.C:228
 ConfigBeautyPPR.C:229
 ConfigBeautyPPR.C:230
 ConfigBeautyPPR.C:231
 ConfigBeautyPPR.C:232
 ConfigBeautyPPR.C:233
 ConfigBeautyPPR.C:234
 ConfigBeautyPPR.C:235
 ConfigBeautyPPR.C:236
 ConfigBeautyPPR.C:237
 ConfigBeautyPPR.C:238
 ConfigBeautyPPR.C:239
 ConfigBeautyPPR.C:240
 ConfigBeautyPPR.C:241
 ConfigBeautyPPR.C:242
 ConfigBeautyPPR.C:243
 ConfigBeautyPPR.C:244
 ConfigBeautyPPR.C:245
 ConfigBeautyPPR.C:246
 ConfigBeautyPPR.C:247
 ConfigBeautyPPR.C:248
 ConfigBeautyPPR.C:249
 ConfigBeautyPPR.C:250
 ConfigBeautyPPR.C:251
 ConfigBeautyPPR.C:252
 ConfigBeautyPPR.C:253
 ConfigBeautyPPR.C:254
 ConfigBeautyPPR.C:255
 ConfigBeautyPPR.C:256
 ConfigBeautyPPR.C:257
 ConfigBeautyPPR.C:258
 ConfigBeautyPPR.C:259
 ConfigBeautyPPR.C:260
 ConfigBeautyPPR.C:261
 ConfigBeautyPPR.C:262
 ConfigBeautyPPR.C:263
 ConfigBeautyPPR.C:264
 ConfigBeautyPPR.C:265
 ConfigBeautyPPR.C:266
 ConfigBeautyPPR.C:267
 ConfigBeautyPPR.C:268
 ConfigBeautyPPR.C:269
 ConfigBeautyPPR.C:270
 ConfigBeautyPPR.C:271
 ConfigBeautyPPR.C:272
 ConfigBeautyPPR.C:273
 ConfigBeautyPPR.C:274
 ConfigBeautyPPR.C:275
 ConfigBeautyPPR.C:276
 ConfigBeautyPPR.C:277
 ConfigBeautyPPR.C:278
 ConfigBeautyPPR.C:279
 ConfigBeautyPPR.C:280
 ConfigBeautyPPR.C:281
 ConfigBeautyPPR.C:282
 ConfigBeautyPPR.C:283
 ConfigBeautyPPR.C:284
 ConfigBeautyPPR.C:285
 ConfigBeautyPPR.C:286
 ConfigBeautyPPR.C:287
 ConfigBeautyPPR.C:288
 ConfigBeautyPPR.C:289
 ConfigBeautyPPR.C:290
 ConfigBeautyPPR.C:291
 ConfigBeautyPPR.C:292
 ConfigBeautyPPR.C:293
 ConfigBeautyPPR.C:294
 ConfigBeautyPPR.C:295
 ConfigBeautyPPR.C:296
 ConfigBeautyPPR.C:297
 ConfigBeautyPPR.C:298
 ConfigBeautyPPR.C:299
 ConfigBeautyPPR.C:300
 ConfigBeautyPPR.C:301
 ConfigBeautyPPR.C:302
 ConfigBeautyPPR.C:303
 ConfigBeautyPPR.C:304
 ConfigBeautyPPR.C:305
 ConfigBeautyPPR.C:306
 ConfigBeautyPPR.C:307
 ConfigBeautyPPR.C:308
 ConfigBeautyPPR.C:309
 ConfigBeautyPPR.C:310
 ConfigBeautyPPR.C:311
 ConfigBeautyPPR.C:312
 ConfigBeautyPPR.C:313
 ConfigBeautyPPR.C:314
 ConfigBeautyPPR.C:315
 ConfigBeautyPPR.C:316
 ConfigBeautyPPR.C:317
 ConfigBeautyPPR.C:318
 ConfigBeautyPPR.C:319
 ConfigBeautyPPR.C:320
 ConfigBeautyPPR.C:321
 ConfigBeautyPPR.C:322
 ConfigBeautyPPR.C:323
 ConfigBeautyPPR.C:324
 ConfigBeautyPPR.C:325
 ConfigBeautyPPR.C:326
 ConfigBeautyPPR.C:327
 ConfigBeautyPPR.C:328
 ConfigBeautyPPR.C:329
 ConfigBeautyPPR.C:330
 ConfigBeautyPPR.C:331
 ConfigBeautyPPR.C:332