Skip to content

Commit 8929946

Browse files
committed
A3: Add geometries for IOTOF
1 parent 3e68768 commit 8929946

File tree

2 files changed

+52
-19
lines changed

2 files changed

+52
-19
lines changed

Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/Detector.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Detector : public o2::base::DetImpl<Detector>
6060
return nullptr;
6161
}
6262

63-
void configLayers(bool itof = true, bool otof = true, bool ftof = true, bool btof = true);
63+
void configLayers(bool itof = true, bool otof = true, bool ftof = true, bool btof = true, std::string pattern = "");
6464

6565
void configServices();
6666
void createMaterials();

Detectors/Upgrades/ALICE3/IOTOF/simulation/src/Detector.cxx

Lines changed: 51 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
#include "IOTOFSimulation/Detector.h"
2121
#include "IOTOFBase/IOTOFBaseParam.h"
2222

23-
using o2::itsmft::Hit;
24-
2523
namespace o2
2624
{
2725
namespace iotof
@@ -56,19 +54,54 @@ void Detector::ConstructGeometry()
5654
createGeometry();
5755
}
5856

59-
void Detector::configLayers(bool itof, bool otof, bool ftof, bool btof)
57+
void Detector::configLayers(bool itof, bool otof, bool ftof, bool btof, std::string pattern)
6058
{
59+
60+
float radiusInnerTof = 19.f;
61+
float radiusOuterTof = 85.f;
62+
float lengthInnerTof = 124.f;
63+
float lengthOuterTof = 680.f;
64+
std::pair<float, float> radiusRangeDiskTof = {15.f, 100.f};
65+
float zForwardTof = 370.f;
66+
if (pattern == "") {
67+
} else if (pattern == "v3b") {
68+
LOG(info) << "Configuring IOTOF layers with v3b pattern";
69+
ftof = false;
70+
btof = false;
71+
} else if (pattern == "v3b1a") {
72+
lengthOuterTof = 500.f;
73+
zForwardTof = 270.f;
74+
radiusRangeDiskTof = {30.f, 100.f};
75+
} else if (pattern == "v3b1b") {
76+
lengthOuterTof = 500.f;
77+
zForwardTof = 200.f;
78+
radiusRangeDiskTof = {20.f, 68.f};
79+
} else if (pattern == "v3b2a") {
80+
lengthOuterTof = 440.f;
81+
zForwardTof = 270.f;
82+
radiusRangeDiskTof = {30.f, 120.f};
83+
} else if (pattern == "v3b2b") {
84+
lengthOuterTof = 440.f;
85+
zForwardTof = 200.f;
86+
radiusRangeDiskTof = {20.f, 68.f};
87+
} else if (pattern == "v3b3") {
88+
lengthOuterTof = 580.f;
89+
zForwardTof = 200.f;
90+
radiusRangeDiskTof = {20.f, 68.f};
91+
} else {
92+
LOG(fatal) << "IOTOF layer pattern " << pattern << " not recognized, exiting";
93+
}
6194
if (itof) {
62-
mITOFLayer = ITOFLayer(std::string{GeometryTGeo::getITOFLayerPattern()}, 19.f, 0.f, 124.f, 0.f, 0.02f, true); // iTOF
95+
mITOFLayer = ITOFLayer(std::string{GeometryTGeo::getITOFLayerPattern()}, radiusInnerTof, 0.f, lengthInnerTof, 0.f, 0.02f, true); // iTOF
6396
}
6497
if (otof) {
65-
mOTOFLayer = OTOFLayer(std::string{GeometryTGeo::getOTOFLayerPattern()}, 85.f, 0.f, 680.f, 0.f, 0.02f, true); // oTOF
98+
mOTOFLayer = OTOFLayer(std::string{GeometryTGeo::getOTOFLayerPattern()}, radiusOuterTof, 0.f, lengthOuterTof, 0.f, 0.02f, true); // oTOF
6699
}
67100
if (ftof) {
68-
mFTOFLayer = FTOFLayer(std::string{GeometryTGeo::getFTOFLayerPattern()}, 15.f, 100.f, 0.f, 370.f, 0.02f, false); // fTOF
101+
mFTOFLayer = FTOFLayer(std::string{GeometryTGeo::getFTOFLayerPattern()}, radiusRangeDiskTof.first, radiusRangeDiskTof.second, 0.f, zForwardTof, 0.02f, false); // fTOF
69102
}
70103
if (btof) {
71-
mBTOFLayer = BTOFLayer(std::string{GeometryTGeo::getBTOFLayerPattern()}, 15.f, 100.f, 0.f, -370.f, 0.02f, false); // bTOF
104+
mBTOFLayer = BTOFLayer(std::string{GeometryTGeo::getBTOFLayerPattern()}, radiusRangeDiskTof.first, radiusRangeDiskTof.second, 0.f, -zForwardTof, 0.02f, false); // bTOF
72105
}
73106
}
74107

@@ -214,28 +247,28 @@ bool Detector::ProcessHits(FairVolume* vol)
214247
bool startHit = false, stopHit = false;
215248
unsigned char status = 0;
216249
if (fMC->IsTrackEntering()) {
217-
status |= Hit::kTrackEntering;
250+
status |= o2::itsmft::Hit::kTrackEntering;
218251
}
219252
if (fMC->IsTrackInside()) {
220-
status |= Hit::kTrackInside;
253+
status |= o2::itsmft::Hit::kTrackInside;
221254
}
222255
if (fMC->IsTrackExiting()) {
223-
status |= Hit::kTrackExiting;
256+
status |= o2::itsmft::Hit::kTrackExiting;
224257
}
225258
if (fMC->IsTrackOut()) {
226-
status |= Hit::kTrackOut;
259+
status |= o2::itsmft::Hit::kTrackOut;
227260
}
228261
if (fMC->IsTrackStop()) {
229-
status |= Hit::kTrackStopped;
262+
status |= o2::itsmft::Hit::kTrackStopped;
230263
}
231264
if (fMC->IsTrackAlive()) {
232-
status |= Hit::kTrackAlive;
265+
status |= o2::itsmft::Hit::kTrackAlive;
233266
}
234267

235268
// track is entering or created in the volume
236-
if ((status & Hit::kTrackEntering) || (status & Hit::kTrackInside && !mTrackData.mHitStarted)) {
269+
if ((status & o2::itsmft::Hit::kTrackEntering) || (status & o2::itsmft::Hit::kTrackInside && !mTrackData.mHitStarted)) {
237270
startHit = true;
238-
} else if ((status & (Hit::kTrackExiting | Hit::kTrackOut | Hit::kTrackStopped))) {
271+
} else if ((status & (o2::itsmft::Hit::kTrackExiting | o2::itsmft::Hit::kTrackOut | o2::itsmft::Hit::kTrackStopped))) {
239272
stopHit = true;
240273
}
241274

@@ -264,9 +297,9 @@ bool Detector::ProcessHits(FairVolume* vol)
264297
fMC->CurrentVolOffID(3, halfstave);
265298
fMC->CurrentVolOffID(4, stave);
266299

267-
Hit* p = addHit(stack->GetCurrentTrackNumber(), lay, mTrackData.mPositionStart.Vect(), positionStop.Vect(),
268-
mTrackData.mMomentumStart.Vect(), mTrackData.mMomentumStart.E(), positionStop.T(),
269-
mTrackData.mEnergyLoss, mTrackData.mTrkStatusStart, status);
300+
o2::itsmft::Hit* p = addHit(stack->GetCurrentTrackNumber(), lay, mTrackData.mPositionStart.Vect(), positionStop.Vect(),
301+
mTrackData.mMomentumStart.Vect(), mTrackData.mMomentumStart.E(), positionStop.T(),
302+
mTrackData.mEnergyLoss, mTrackData.mTrkStatusStart, status);
270303

271304
// RS: not sure this is needed
272305
// Increment number of Detector det points in TParticle

0 commit comments

Comments
 (0)