-
Notifications
You must be signed in to change notification settings - Fork 494
Expand file tree
/
Copy pathParameterGEM.h
More file actions
78 lines (65 loc) · 3.43 KB
/
ParameterGEM.h
File metadata and controls
78 lines (65 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
/// \file ParameterGEM.h
/// \brief Definition of the parameter class for the GEM stack
/// \author Andi Mathis, TU München, andreas.mathis@ph.tum.de
// Remark: This file has been modified by Viktor Ratza in order to
// implement the electron efficiency models for the collection and the
// extraction efficiency.
#ifndef ALICEO2_TPC_ParameterGEM_H_
#define ALICEO2_TPC_ParameterGEM_H_
#include <array>
#include <cmath>
#include "CommonUtils/ConfigurableParam.h"
#include "CommonUtils/ConfigurableParamHelper.h"
namespace o2
{
namespace tpc
{
enum class AmplificationMode : char {
FullMode = 0, ///< Full 4-GEM simulation of all efficiencies etc.
EffectiveMode = 1, ///< Effective amplification mode using one polya distribution only
};
struct ParameterGEM : public o2::conf::ConfigurableParamHelper<ParameterGEM> {
/// Get the effective gain of a given GEM in the stack
/// \param GEM GEM of interest in the stack (1 - 4)
/// \return Effective gain of a given GEM in the stack
float getEffectiveGain(int gem) const
{
return CollectionEfficiency[gem] * AbsoluteGain[gem] * ExtractionEfficiency[gem];
}
/// \todo Remove hard-coded number of GEMs in a stack
/// \todo O2ParamDef takes no std::vectors/arrays, therefore the c-style
int Geometry[4] = {0, 2, 2, 0}; ///< GEM geometry (0 standard, 1 medium, 2 large)
float Distance[5] = {4.f, 0.2f, 0.2f, 0.2f, 0.2f}; ///< Distances between cathode/anode and stages (in cm)
float Potential[4] = {270.f, 250.f, 270.f, 340.f}; ///< Potential (in Volts)
float ElectricField[5] = {0.4f, 4.f, 2.f, 0.1f, 4.f}; ///< Electric field configuration (in kV/cm)
float AbsoluteGain[4] = {14.f, 8.f, 53.f, 240.f}; ///< Absolute gain
float CollectionEfficiency[4] = {1.f, 0.2f, 0.25f, 1.f}; ///< Collection efficiency
float ExtractionEfficiency[4] = {0.65f, 0.55f, 0.12f, 0.6f}; ///< Extraction efficiency
float RelativeGainStack[4] = {1.f, 1.f, 1.f, 1.f}; ///< Relative gain of the stack per region (IROC, OROC1, OROC2, OROC3) for the EffectiveMode
float TotalGainStack = 2000.f; ///< Total gain of the stack for the EffectiveMode
float KappaStack = 1.205f; ///< Variable steering the energy resolution of the full stack for the EffectiveMode
float EfficiencyStack = 0.528f; ///< Variable steering the single electron efficiency of the full stack for the EffectiveMode
AmplificationMode AmplMode = AmplificationMode::EffectiveMode; ///< Amplification mode [FullMode / EffectiveMode]
O2ParamDef(ParameterGEM, "TPCGEMParam");
};
} // namespace tpc
namespace framework
{
template <typename T>
struct is_messageable;
template <>
struct is_messageable<o2::tpc::ParameterGEM> : std::true_type {
};
} // namespace framework
} // namespace o2
#endif // ALICEO2_TPC_ParameterGEM_H_