Skip to content

Commit 4acf74a

Browse files
committed
External generator for cosmic-ray production
1 parent b1f0bde commit 4acf74a

File tree

2 files changed

+115
-0
lines changed

2 files changed

+115
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
// Copyright CERN and copyright holders of ALICE O2. This software is
2+
// distributed under the terms of the GNU General Public License v3 (GPL
3+
// Version 3), copied verbatim in the file "COPYING".
4+
//
5+
// See http://alice-o2.web.cern.ch/license for full licensing information.
6+
//
7+
// In applying this license CERN does not waive the privileges and immunities
8+
// granted to it by virtue of its status as an Intergovernmental Organization
9+
// or submit itself to any jurisdiction.
10+
11+
//< Macro to run QED background generator, us it as e.g.
12+
//< o2-sim -n10000 -m PIPE ITS TPC -g extgen --configKeyValues "GeneratorExternal.fileName=$O2_ROOT/share/Generators/external/GenCosmicsLoader.C"
13+
14+
R__LOAD_LIBRARY(libGeneratorCosmics)
15+
16+
using namespace o2::eventgen;
17+
18+
o2::eventgen::GeneratorTGenerator* GenCosmics()
19+
{
20+
auto genCosm = new GeneratorCosmics();
21+
auto& cosmParam = GenCosmicsParam::Instance();
22+
23+
if (cosmParam.param == GenCosmicsParam::ParamMI) {
24+
genCosm->setParamMI();
25+
} else if (cosmParam.param == GenCosmicsParam::ParamACORDE) {
26+
genCosm->setParamACORDE();
27+
} else if (cosmParam.param == GenCosmicsParam::ParamTPC) {
28+
genCosm->setParamTPC();
29+
} else {
30+
LOG(FATAL) << "Unknown cosmics param type " << cosmParam.param;
31+
}
32+
33+
genCosm->setNPart(cosmParam.nPart);
34+
genCosm->setPRange(cosmParam.pmin, cosmParam.pmax);
35+
36+
switch (cosmParam.accept) {
37+
case GenCosmicsParam::ITS0:
38+
genCosm->requireITS0();
39+
break;
40+
case GenCosmicsParam::ITS1:
41+
genCosm->requireITS1();
42+
break;
43+
case GenCosmicsParam::ITS2:
44+
genCosm->requireITS2();
45+
break;
46+
case GenCosmicsParam::ITS3:
47+
genCosm->requireITS3();
48+
break;
49+
case GenCosmicsParam::ITS4:
50+
genCosm->requireITS4();
51+
break;
52+
case GenCosmicsParam::ITS5:
53+
genCosm->requireITS5();
54+
break;
55+
case GenCosmicsParam::ITS6:
56+
genCosm->requireITS6();
57+
break;
58+
case GenCosmicsParam::TPC:
59+
genCosm->requireTPC();
60+
break;
61+
case GenCosmicsParam::Custom:
62+
genCosm->requireXZAccepted(cosmParam.customAccX, cosmParam.customAccZ);
63+
break;
64+
default:
65+
LOG(FATAL) << "Unknown cosmics acceptance type " << cosmParam.accept;
66+
break;
67+
}
68+
69+
genCosm->Init();
70+
71+
// instance and configure TGenerator interface
72+
auto tgen = new o2::eventgen::GeneratorTGenerator();
73+
tgen->setMomentumUnit(1.); // [GeV/c]
74+
tgen->setEnergyUnit(1.); // [GeV/c]
75+
tgen->setPositionUnit(1.); // [cm]
76+
tgen->setTimeUnit(1.); // [s]
77+
tgen->setTGenerator(genCosm);
78+
fg = tgen;
79+
return tgen;
80+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Copyright CERN and copyright holders of ALICE O2. This software is
2+
// distributed under the terms of the GNU General Public License v3 (GPL
3+
// Version 3), copied verbatim in the file "COPYING".
4+
//
5+
// See http://alice-o2.web.cern.ch/license for full licensing information.
6+
//
7+
// In applying this license CERN does not waive the privileges and immunities
8+
// granted to it by virtue of its status as an Intergovernmental Organization
9+
// or submit itself to any jurisdiction.
10+
11+
//< Loader macro to run QED background generator from QEDepem.C macro, use it as e.g.
12+
//< o2-sim -n10000 -m PIPE ITS TPC -g extgen --configKeyValues "GeneratorExternal.fileName=$O2_ROOT/share/Generators/external/GenCosmicsLoader.C"
13+
//< Generation options can be changed by providing --configKeyValues "cosmics.maxAngle=30.;cosmics.accept=ITS0" etc.
14+
//< See GenCosmicsParam for available options
15+
16+
#include <FairLogger.h>
17+
18+
FairGenerator* fg = nullptr;
19+
20+
FairGenerator* GenCosmicsLoader()
21+
{
22+
const TString macroName = "GenCosmics";
23+
gSystem->Load("libGeneratorCosmics");
24+
25+
// the path of the macro to load depends on where it was installed, we assume that its installation
26+
// directory is the same as of the loader macro
27+
std::ostringstream mstr;
28+
mstr << __FILE__;
29+
TString macroFullName = Form("%s/%s.C", gSystem->DirName(mstr.str().c_str()), macroName.Data());
30+
LOG(INFO) << "\nLoading " << macroFullName.Data() << "\n";
31+
32+
gROOT->LoadMacro(macroFullName.Data());
33+
gInterpreter->ProcessLine(Form("%s()", macroName.Data()));
34+
return fg;
35+
}

0 commit comments

Comments
 (0)