AliRoot Core  a565103 (a565103)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
runSimulation.C
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 /* $Id$ */
17 
25 
26 #if !defined(__CINT__) || defined(__MAKECINT__)
27 #include "AliCDBManager.h"
28 #include "AliSimulation.h"
29 #include "AliRun.h"
30 #include "AliHeader.h"
31 #include <TRandom.h>
32 #include <Riostream.h>
33 #endif
34 
35 void runSimulation(int seed,
36  int nevents,
37  const char* config,
38  const char* embedwith,
39  int runnumber)
40 {
41 // Uncoment following lines to run simulation with local residual mis-alignment
42 // (generated via MUONGenerateGeometryData.C macro)
43 // AliCDBManager* man = AliCDBManager::Instance();
44 // man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
45 // man->SetSpecificStorage("MUON/Align/Data","local://$ALICE_ROOT/OCDB/MUON/ResMisAlignCDB");
46 
47  AliSimulation MuonSim(config);
48 
49  if ( strlen(embedwith) > 0 )
50  {
51  // setups specific to embedding
52 
53  gAlice->SetConfigFunction("Config(\"\", \"param\", \"AliMUONDigitStoreV2S\",kTRUE);");
54 
55  // get the run number from real data
56 
57  AliRunLoader* runLoader = AliRunLoader::Open(embedwith,"titi");
58  if (runLoader == 0x0)
59  {
60  cerr << Form("Cannot open file %s",embedwith) << endl;
61  return;
62  }
63 
64  runLoader->LoadHeader();
65 
66  if ( ! runLoader->GetHeader() ) {
67  cerr << "Cannot load header." << endl;
68  return;
69  }
70  else {
71  Int_t runNumber = runLoader->GetHeader()->GetRun();
72  MuonSim.SetRunNumber(runNumber);
73  cout << Form("***** RUN NUMBER SET TO %09d ACCORDING TO %s ",runNumber,embedwith) << endl;
74  }
75  runLoader->UnloadHeader();
76  delete runLoader;
77 
78  cout << "***** EMBEDDING MODE : USING RAW OCDB" << endl;
79  AliCDBManager::Instance()->SetDefaultStorage("raw://");
80  AliCDBManager::Instance()->SetSpecificStorage("local://$ALICE_ROOT/OCDB","MUON/Align/Data");
81 
82  }
83  else if ( runnumber > 0 )
84  {
85  // simulation with anchor run
86 
87  cout << "***** ANCHOR RUN MODE : USING RAW OCDB AS MUCH AS POSSIBLE" << endl;
88  cout << "***** AND TAKING VERTEX FROM OCDB IF AVAILABLE" << endl;
89 
90  // Last parameter of Config.C indicates we're doing realistic simulations, so we NEED
91  // the ITS in the geometry
92  gAlice->SetConfigFunction("Config(\"\", \"param\", \"AliMUONDigitStoreV2S\",kFALSE,kTRUE);");
93 
94  AliCDBManager::Instance()->SetDefaultStorage("raw://");
95  // use something like : "alien://folder=/alice/data/2011/OCDB?cacheFold=/Users/laurent/OCDBcache" instead of "raw://"
96  // if getting slow/problematic accesses to OCDB...
97 
98  AliCDBManager::Instance()->SetSpecificStorage("MUON/Align/Data","alien://folder=/alice/cern.ch/user/j/jcastill/LHC10hMisAlignCDB");
99 
100  MuonSim.SetRunNumber(runnumber);
101 
102  MuonSim.UseVertexFromCDB();
103  }
104  else
105  {
106  gAlice->SetConfigFunction("Config(\"\", \"param\", \"AliMUONDigitStoreV2S\",kFALSE);");
107  }
108 
109  MuonSim.SetSeed(seed);
110  MuonSim.SetTriggerConfig("MUON");
111  MuonSim.SetWriteRawData("MUON ","raw.root",kTRUE);
112 
113  MuonSim.SetMakeSDigits("MUON");
114  MuonSim.SetMakeDigits("MUON ITS"); // ITS needed to propagate the simulated vertex
115  MuonSim.SetMakeDigitsFromHits("ITS"); // ITS needed to propagate the simulated vertex
116 
117  MuonSim.SetRunHLT("libAliHLTMUON.so chains=dHLT-sim");
118 
119  MuonSim.SetRunQA("MUON:ALL");
120 
121  if ( strlen(embedwith) > 0 )
122  {
123  MuonSim.MergeWith(embedwith);
124  }
125 
126  MuonSim.Run(nevents);
127  //gObjectTable->Print();
128 
129 }
TFile * Open(const char *filename, Long64_t &nevents)
void runSimulation(int seed, int nevents, const char *config, const char *embedwith, int runnumber)
Definition: runSimulation.C:35
AliRun * gAlice