ROOT logo
// Config file MUON + ITS (for vertex) for PDC06
// Tuned for p+p min biais and quarkonia production (AliGenMUONCocktailpp)
// Remember to define the directory and option
// gAlice->SetConfigFunction("Config('$HOME','box');");
// april 3rd: added L3 magnet 

void LoadPythia();

void Config(char directory[100]="", char option[6]="trg1mu")
{
 
  static Int_t sseed = 0; // Set 0 to use the current time

  //=====================================================================
  LoadPythia();
  gSystem->Load("libgeant321.so");
  new TGeant3TGeo("C++ Interface to Geant3");
  
  //=======================================================================

  if(!AliCDBManager::Instance()->IsDefaultStorageSet()){
    AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    AliCDBManager::Instance()->SetRun(0);
  }
  
  // Set Random Number seed
  gRandom->SetSeed(sseed);

  //  Create the output file    
  Text_t filename[100];
  sprintf(filename,"%sgalice.root",directory);

  AliRunLoader* rl=0x0;
  rl = AliRunLoader::Open(
	filename, 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("p-p");
  cout<<"Trigger configuration is set to  p-p"<<endl;

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

  //=======================================================================
  // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
    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); 
  //
  //=======================================================================
  // ************* STEERING parameters FOR ALICE SIMULATION **************
  // Chamber positions
  // From AliMUONConstants class we get :
  //   Position Z (along beam) of the chambers (in cm) 
  //        (from AliMUONConstants class):  
  //    533.5,  546.5,  678.5, 693.5,  964.0, 986.0, 1251.5, 1278.5, 
  //   1416.5, 1443.5,  1610, 1625.,  1710., 1725. 
  //   Internal Radius (in cm)   
  //     36.4,  46.2,  66.0,  80.,  80., 100., 100.    
  //   External Radius (in cm)
  //    183.,  245.,  395.,  560., 563., 850., 900.  
  //=======================================================================
    AliGenPythia* PythiaForMUONCocktail(Decay_t dt)
	{
	    AliGenPythia *pythia = new AliGenPythia(1);
	    pythia->SetProcess(kPyMbMSEL1);
	    pythia->SetStrucFunc(kCTEQ5L);
	    pythia->SetEnergyCMS(14000.);
	    pythia->SetForceDecay(dt);
	    pythia->SetPtRange(0.,100.);
	    pythia->SetYRange(-8.,8.);
	    pythia->SetPhiRange(0.,360.);
	    pythia->SetPtHard(2.76,-1.0);
	    pythia->SwitchHFOff();
	    return pythia;
	}

  if (!strcmp(option,"trg2mu")) {
    AliGenMUONCocktailpp *gener = new AliGenMUONCocktailpp();
      gener->SetPtRange(0.,100.);
      gener->SetYRange(-4.,-2.4);
      gener->SetPhiRange(0.,360.);
      gener->SetMuonMultiplicity(2);  
      gener->SetMuonPtCut(0.5);
      gener->SetMuonThetaRange(171.,178.);      
      gener->SetOrigin(0.,0.,0.); 
      gener->SetSigma(0.,0.,5.);
      gener->SetVertexSmear(kPerEvent);
      Decay_t dt = gener->GetDecayModePythia(dt);
      AliGenPythia* pythia = PythiaForMUONCocktail(dt);
      pythia->Init();     
      gener->AddGenerator(pythia,"Pythia",1);
      gener->Init(); 
  }
 
  if (!strcmp(option,"trg1mu")) {
    AliGenMUONCocktailpp *gener = new AliGenMUONCocktailpp();
      gener->SetPtRange(0.,100.);
      gener->SetYRange(-4.,-2.4);
      gener->SetPhiRange(0.,360.);
      gener->SetMuonMultiplicity(1);  
      gener->SetMuonPtCut(0.5);
      gener->SetMuonThetaRange(171.,178.);      
      gener->SetOrigin(0.,0.,0.); 
      gener->SetSigma(0.,0.,5.);
      gener->SetVertexSmear(kPerEvent);
      Decay_t dt = gener->GetDecayModePythia();
      AliGenPythia* pythia = PythiaForMUONCocktail(dt);
      pythia->Init();     
      gener->AddGenerator(pythia,"Pythia",1);
      gener->Init(); 
  }
  //============================================================= 
  // Field (L3 0.5 T) outside dimuon spectrometer
  AliMagF* field = new AliMagF("Maps","Maps",1.,1.,AliMagF::k5kG);
  field->SetL3ConstField(0); // Using const. field in the barrel 
  TGeoGlobalMagField::Instance()->SetField(field);

  Int_t   iITS = 1;
  Int_t   iZDC = 1;
  Int_t   iFMD = 1;
  Int_t   iPHOS = 1;
  Int_t   iPMD = 1;
  Int_t   iT0 = 1;
  Int_t   iVZERO = 1;

  rl->CdGAFile();

  //=================== Alice BODY parameters =============================
  AliBODY *BODY = new AliBODY("BODY","Alice envelop");
  //=================== ABSO parameters ============================
  AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");
  //=================== DIPO parameters ============================
  AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
  //================== HALL parameters ============================
  AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
  //================== The L3 Magnet ==============================
  AliMAG *MAG = new AliMAG("MAG", "L3 Magnet");
  //=================== PIPE parameters ============================
  AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
  //=================== SHIL parameters ============================
  AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");
  //=================== ITS parameters =============================
  if(iITS) {
      AliITS *ITS  = new AliITSv11("ITS","ITS v11");
  }
 //=================== ZDC parameters =============================
  if(iZDC) {
      AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
  }      
 //=================== FMD parameters =============================
  if(iFMD) {
      AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
  }
 //=================== PHOS  parameters =============================
  if(iPHOS) {
      AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
  }
 //=================== PMD parameters =============================
  if(iPMD) {
      AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
  }
 //=================== T0 parameters =============================  
  if (iT0) {
      AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
  }
 //=================== VZERO parameters =============================
  if (iVZERO) {
      AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
  }

  //=================== MUON Subsystem ===========================
  cout << ">>> Config.C: Creating AliMUONv1 ..."<<endl;

  // With the following compactor, what you get (in case you wonder...) is :
  //
  // - "FactoryV4", that is all stations using new segmentations/mapping
  // - "sdigitizer:AliMUONSDigitizerV2", performing decalibration
  // - "digitizer:NewDigitizerOldTrigger" <=> digitizer=AliMUONDigitizerV3,
  //    using the "old" trigger code, performing calibration
  //
  AliMUON *MUON = new AliMUONv1("MUON");
}

Float_t EtaToTheta(Float_t arg){
  return (180./TMath::Pi())*2.*atan(exp(-arg));
}


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
}


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