ROOT logo
#include <TPDGCode.h>

void Config()
{
  Int_t iField = 0;

  // libraries required by geant321
  gSystem->Load("libgeant321");

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

  // Create the output file
  TFile *rootfile = new TFile("TRD_test.root","recreate");
  rootfile->SetCompressionLevel(2);

  // Define the monte carlo
  TGeant3 *geant3 = (TGeant3*) gMC;

  AliRunLoader* rl=0x0;
  cout << "AliTRDconfig.C: Creating Run Loader ..." <<endl;
  rl = AliRunLoader::Open("TRD_test.root"
                         ,AliConfig::GetDefaultEventFolderName()
                         ,"recreate");
  if (rl == 0x0) {
    gAlice->Fatal("AliTRDconfig.C","Can not instatiate the Run Loader");
    return;
  }
  rl->SetCompressionLevel(2);
  rl->SetNumberOfEventsPerFile(3);
  gAlice->SetRunLoader(rl);

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

  // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
  geant3->SetTRIG(1); // Number of events to be processed 
  geant3->SetSWIT(4,10);
  geant3->SetDEBU(0,0,1);
  //geant3->SetSWIT(2,2);
  geant3->SetDCAY(1);
  geant3->SetPAIR(1);
  geant3->SetCOMP(1);
  geant3->SetPHOT(1);
  geant3->SetPFIS(0);
  geant3->SetDRAY(0);
  geant3->SetANNI(1);
  geant3->SetBREM(1);
  geant3->SetMUNU(1);
  geant3->SetCKOV(1);
  geant3->SetHADR(1); // Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
  geant3->SetLOSS(2);
  geant3->SetMULS(1);
  geant3->SetRAYL(1);
  geant3->SetAUTO(1); // Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0)
  geant3->SetABAN(0); // Restore 3.16 behaviour for abandoned tracks
  geant3->SetOPTI(2); // Select optimisation level for GEANT geometry searches (0,1,2)
  geant3->SetERAN(5.e-7);

  Float_t cut    = 1.e-3; // 1MeV cut by default
  Float_t tofmax = 1.e10;
  //             GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
  geant3->SetCUTS(cut,cut, cut, cut, cut, cut,  cut,  cut, cut,  cut, tofmax);

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

  AliGenCocktail *gener = new AliGenCocktail();

  AliGenBox *genEl = new AliGenBox(100);
  genEl->SetOrigin(0,0,0);        // Vertex position
  genEl->SetSigma(0,0,0);         // Sigma in (X,Y,Z) (cm) on IP position
  genEl->SetPart(kElectron);             // Only electrons 

  AliGenBox *genPi = new AliGenBox(100);
  genPi->SetOrigin(0,0,0);        // Vertex position
  genPi->SetSigma(0,0,0);         // Sigma in (X,Y,Z) (cm) on IP position
  genPi->SetPart(kPiMinus);           // Only pions 

  gener->AddGenerator(genEl,"Electrons",1);
  gener->AddGenerator(genPi,"Pions"    ,1);

  if (iField) {

    // With magnetic field on
    AliGenerator *gg = gener->FirstGenerator()->Generator();
    gg->SetMomentumRange(3.00,3.01);
    gg->SetPhiRange(76.0,92.0);
    gg->SetThetaRange(83.0,97.0);
    gg = gener->NextGenerator()->Generator();
    gg->SetMomentumRange(0.560,0.561);
    gg->SetPhiRange(62.0,78.0);
    gg->SetThetaRange(83.0,97.0);

    gener->Init();

    // Specify maximum magnetic field in Tesla (neg. ==> default field)
    // 0.4 T
    gAlice->SetField(-999,2,2.0);    

  }
  else {

    // With magnetic field off
    AliGenerator *gg = gener->FirstGenerator()->Generator();
    gg->SetMomentumRange(3.00,3.01);
    gg->SetPhiRange(82.0,98.0);
    gg->SetThetaRange(83.0,97.0);
    gg = gener->NextGenerator()->Generator();
    gg->SetMomentumRange(0.560,0.561);
    gg->SetPhiRange(82.0,98.0);
    gg->SetThetaRange(83.0,97.0);

    gener->Init();

    // Specify maximum magnetic field in Tesla (neg. ==> default field)
    // No field
    gAlice->SetField(0);    

  }

  Int_t iMAG   = 1;
  Int_t iITS   = 0;
  Int_t iTPC   = 0;
  Int_t iTRD   = 1;
  Int_t iABSO  = 1;
  Int_t iDIPO  = 1;
  Int_t iHALL  = 1;
  Int_t iFRAME = 1;
  Int_t iSHIL  = 1;
  Int_t iPIPE  = 1;

  rl->CdGAFile();

  //=================== 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 AliABSOv0("ABSO","Muon Absorber");
  }

  if (iDIPO) {
    //=================== DIPO parameters ============================
    AliDIPO *DIPO  = new AliDIPOv2("DIPO","Dipole version 2");
  }

  if (iHALL) {
    //=================== HALL parameters ============================
    AliHALL *HALL  = new AliHALL("HALL","Alice Hall");
  }

  if (iFRAME) {
    //=================== FRAME parameters ============================
    AliFRAMEv2 *FRAME  = new AliFRAMEv2("FRAME","Space Frame");
    FRAME->SetHoles(0);
  }

  if (iSHIL) {
    //=================== SHIL parameters ============================
    AliSHIL *SHIL  = new AliSHILv0("SHIL","Shielding");
  }

  if (iPIPE) {
    //=================== PIPE parameters ============================
    AliPIPE *PIPE  = new AliPIPEv0("PIPE","Beam Pipe");
  }

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

    AliITSvPPRasymmFMD *ITS = new AliITSvPPRasymmFMD("ITS","ITS PPR");
    ITS->SetMinorVersion(2);
    ITS->SetReadDet(kTRUE);
    ITS->SetThicknessDet1(200.);
    ITS->SetThicknessDet2(200.);
    ITS->SetThicknessChip1(200.);
    ITS->SetThicknessChip2(200.);
    ITS->SetRails(0);
    ITS->SetCoolingFluid(1);
    ITS->SetEUCLID(0);

  }

  if (iTPC) {
    //============================ TPC parameters ================================
    // --- This allows the user to specify sectors for the SLOW (TPC geometry 2)
    // --- Simulator. SecAL (SecAU) <0 means that ALL lower (upper)
    // --- sectors are specified, any value other than that requires at least one 
    // --- sector (lower or upper)to be specified!
    // --- Reminder: sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0)
    // ---           sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0)
    // --- SecLows - number of lower sectors specified (up to 6)
    // --- SecUps - number of upper sectors specified (up to 12)
    // --- Sens - sensitive strips for the Slow Simulator !!!
    // --- This does NOT work if all S or L-sectors are specified, i.e.
    // --- if SecAL or SecAU < 0
    //
    //
    //-----------------------------------------------------------------------------

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

  }

  if (iTRD) {
    //=================== TRD parameters ============================
  
    AliTRD *TRD  = new AliTRDv1("TRD","TRD slow simulator");
  
    // Set to detailed display
    TRD->SetDisplayType(1);

    // Draw TR photons
    TRD->SetDrawTR(1);

  }
        
}
 AliTRDconfig.C:1
 AliTRDconfig.C:2
 AliTRDconfig.C:3
 AliTRDconfig.C:4
 AliTRDconfig.C:5
 AliTRDconfig.C:6
 AliTRDconfig.C:7
 AliTRDconfig.C:8
 AliTRDconfig.C:9
 AliTRDconfig.C:10
 AliTRDconfig.C:11
 AliTRDconfig.C:12
 AliTRDconfig.C:13
 AliTRDconfig.C:14
 AliTRDconfig.C:15
 AliTRDconfig.C:16
 AliTRDconfig.C:17
 AliTRDconfig.C:18
 AliTRDconfig.C:19
 AliTRDconfig.C:20
 AliTRDconfig.C:21
 AliTRDconfig.C:22
 AliTRDconfig.C:23
 AliTRDconfig.C:24
 AliTRDconfig.C:25
 AliTRDconfig.C:26
 AliTRDconfig.C:27
 AliTRDconfig.C:28
 AliTRDconfig.C:29
 AliTRDconfig.C:30
 AliTRDconfig.C:31
 AliTRDconfig.C:32
 AliTRDconfig.C:33
 AliTRDconfig.C:34
 AliTRDconfig.C:35
 AliTRDconfig.C:36
 AliTRDconfig.C:37
 AliTRDconfig.C:38
 AliTRDconfig.C:39
 AliTRDconfig.C:40
 AliTRDconfig.C:41
 AliTRDconfig.C:42
 AliTRDconfig.C:43
 AliTRDconfig.C:44
 AliTRDconfig.C:45
 AliTRDconfig.C:46
 AliTRDconfig.C:47
 AliTRDconfig.C:48
 AliTRDconfig.C:49
 AliTRDconfig.C:50
 AliTRDconfig.C:51
 AliTRDconfig.C:52
 AliTRDconfig.C:53
 AliTRDconfig.C:54
 AliTRDconfig.C:55
 AliTRDconfig.C:56
 AliTRDconfig.C:57
 AliTRDconfig.C:58
 AliTRDconfig.C:59
 AliTRDconfig.C:60
 AliTRDconfig.C:61
 AliTRDconfig.C:62
 AliTRDconfig.C:63
 AliTRDconfig.C:64
 AliTRDconfig.C:65
 AliTRDconfig.C:66
 AliTRDconfig.C:67
 AliTRDconfig.C:68
 AliTRDconfig.C:69
 AliTRDconfig.C:70
 AliTRDconfig.C:71
 AliTRDconfig.C:72
 AliTRDconfig.C:73
 AliTRDconfig.C:74
 AliTRDconfig.C:75
 AliTRDconfig.C:76
 AliTRDconfig.C:77
 AliTRDconfig.C:78
 AliTRDconfig.C:79
 AliTRDconfig.C:80
 AliTRDconfig.C:81
 AliTRDconfig.C:82
 AliTRDconfig.C:83
 AliTRDconfig.C:84
 AliTRDconfig.C:85
 AliTRDconfig.C:86
 AliTRDconfig.C:87
 AliTRDconfig.C:88
 AliTRDconfig.C:89
 AliTRDconfig.C:90
 AliTRDconfig.C:91
 AliTRDconfig.C:92
 AliTRDconfig.C:93
 AliTRDconfig.C:94
 AliTRDconfig.C:95
 AliTRDconfig.C:96
 AliTRDconfig.C:97
 AliTRDconfig.C:98
 AliTRDconfig.C:99
 AliTRDconfig.C:100
 AliTRDconfig.C:101
 AliTRDconfig.C:102
 AliTRDconfig.C:103
 AliTRDconfig.C:104
 AliTRDconfig.C:105
 AliTRDconfig.C:106
 AliTRDconfig.C:107
 AliTRDconfig.C:108
 AliTRDconfig.C:109
 AliTRDconfig.C:110
 AliTRDconfig.C:111
 AliTRDconfig.C:112
 AliTRDconfig.C:113
 AliTRDconfig.C:114
 AliTRDconfig.C:115
 AliTRDconfig.C:116
 AliTRDconfig.C:117
 AliTRDconfig.C:118
 AliTRDconfig.C:119
 AliTRDconfig.C:120
 AliTRDconfig.C:121
 AliTRDconfig.C:122
 AliTRDconfig.C:123
 AliTRDconfig.C:124
 AliTRDconfig.C:125
 AliTRDconfig.C:126
 AliTRDconfig.C:127
 AliTRDconfig.C:128
 AliTRDconfig.C:129
 AliTRDconfig.C:130
 AliTRDconfig.C:131
 AliTRDconfig.C:132
 AliTRDconfig.C:133
 AliTRDconfig.C:134
 AliTRDconfig.C:135
 AliTRDconfig.C:136
 AliTRDconfig.C:137
 AliTRDconfig.C:138
 AliTRDconfig.C:139
 AliTRDconfig.C:140
 AliTRDconfig.C:141
 AliTRDconfig.C:142
 AliTRDconfig.C:143
 AliTRDconfig.C:144
 AliTRDconfig.C:145
 AliTRDconfig.C:146
 AliTRDconfig.C:147
 AliTRDconfig.C:148
 AliTRDconfig.C:149
 AliTRDconfig.C:150
 AliTRDconfig.C:151
 AliTRDconfig.C:152
 AliTRDconfig.C:153
 AliTRDconfig.C:154
 AliTRDconfig.C:155
 AliTRDconfig.C:156
 AliTRDconfig.C:157
 AliTRDconfig.C:158
 AliTRDconfig.C:159
 AliTRDconfig.C:160
 AliTRDconfig.C:161
 AliTRDconfig.C:162
 AliTRDconfig.C:163
 AliTRDconfig.C:164
 AliTRDconfig.C:165
 AliTRDconfig.C:166
 AliTRDconfig.C:167
 AliTRDconfig.C:168
 AliTRDconfig.C:169
 AliTRDconfig.C:170
 AliTRDconfig.C:171
 AliTRDconfig.C:172
 AliTRDconfig.C:173
 AliTRDconfig.C:174
 AliTRDconfig.C:175
 AliTRDconfig.C:176
 AliTRDconfig.C:177
 AliTRDconfig.C:178
 AliTRDconfig.C:179
 AliTRDconfig.C:180
 AliTRDconfig.C:181
 AliTRDconfig.C:182
 AliTRDconfig.C:183
 AliTRDconfig.C:184
 AliTRDconfig.C:185
 AliTRDconfig.C:186
 AliTRDconfig.C:187
 AliTRDconfig.C:188
 AliTRDconfig.C:189
 AliTRDconfig.C:190
 AliTRDconfig.C:191
 AliTRDconfig.C:192
 AliTRDconfig.C:193
 AliTRDconfig.C:194
 AliTRDconfig.C:195
 AliTRDconfig.C:196
 AliTRDconfig.C:197
 AliTRDconfig.C:198
 AliTRDconfig.C:199
 AliTRDconfig.C:200
 AliTRDconfig.C:201
 AliTRDconfig.C:202
 AliTRDconfig.C:203
 AliTRDconfig.C:204
 AliTRDconfig.C:205
 AliTRDconfig.C:206
 AliTRDconfig.C:207
 AliTRDconfig.C:208
 AliTRDconfig.C:209
 AliTRDconfig.C:210
 AliTRDconfig.C:211
 AliTRDconfig.C:212
 AliTRDconfig.C:213
 AliTRDconfig.C:214
 AliTRDconfig.C:215
 AliTRDconfig.C:216
 AliTRDconfig.C:217
 AliTRDconfig.C:218
 AliTRDconfig.C:219
 AliTRDconfig.C:220
 AliTRDconfig.C:221
 AliTRDconfig.C:222
 AliTRDconfig.C:223
 AliTRDconfig.C:224
 AliTRDconfig.C:225
 AliTRDconfig.C:226
 AliTRDconfig.C:227
 AliTRDconfig.C:228
 AliTRDconfig.C:229
 AliTRDconfig.C:230
 AliTRDconfig.C:231