CbmRoot
Loading...
Searching...
No Matches
CbmFsdMC.h
Go to the documentation of this file.
1/* Copyright (C) 2023 Physikalisches Institut Eberhard Karls Universitaet Tuebingen, Tuebingen
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Yuri Kharlov, Volker Friese, Lukas Chlad [committer] */
4
18#ifndef CBMFSDMC_H
19#define CBMFSDMC_H 1
20
21#include "CbmDefs.h" // for ECbmModuleId
22
23#include <FairDetector.h>
24#include <FairRootManager.h>
25
26#include <TClonesArray.h>
27#include <TLorentzVector.h>
28#include <TString.h>
29
30class FairVolume;
31
32class CbmFsdMC : public FairDetector {
33
34public:
39 CbmFsdMC(Bool_t active = kTRUE, const char* name = "FSDMC")
40 : FairDetector(name, active, ToIntegralType(ECbmModuleId::kFsd)) {};
41
42
44 virtual ~CbmFsdMC();
45
47 CbmFsdMC(const CbmFsdMC&) = delete;
48 CbmFsdMC operator=(const CbmFsdMC&) = delete;
49
50
58 virtual Bool_t IsSensitive(const std::string& name)
59 {
60 return (TString(name).Contains("scint", TString::kIgnoreCase) ? kTRUE : kFALSE);
61 }
62
70 virtual Bool_t CheckIfSensitive(std::string name) { return IsSensitive(name); }
71
72
80 virtual void ConstructGeometry();
81
82
88 virtual void EndOfEvent();
89
90
97 virtual void Initialize();
98
99
105 virtual TClonesArray* GetCollection(Int_t iColl) const { return (iColl ? nullptr : fFsdPoints); }
106
107
112 virtual void Print(Option_t* opt = "") const;
113
114
124 virtual Bool_t ProcessHits(FairVolume* volume = 0);
125
126
131 virtual void Register() { FairRootManager::Instance()->Register("FsdPoint", GetName(), fFsdPoints, kTRUE); }
132
133
138 virtual void Reset() { fFsdPoints->Delete(); };
139
140private:
141 TClonesArray* fFsdPoints = nullptr;
142
144 Int_t fTrackID = -1;
145 Int_t fAddress = -1;
146 TLorentzVector fPos {};
147 TLorentzVector fMom {};
148 Double_t fTime = -1.;
149 Double_t fLength = -1.;
150 Double_t fEloss = -1.;
151
159 void RegisterSensitiveVolumes(TGeoNode* node);
160
161 ClassDef(CbmFsdMC, 1)
162};
163
164
165#endif //? CBMFSDMC_H
XPU_D constexpr auto ToIntegralType(T enumerator) -> typename std::underlying_type< T >::type
Definition CbmDefs.h:29
ECbmModuleId
Definition CbmDefs.h:39
@ kFsd
Forward spectator detector.
Class for the MC transport of the CBM-FSD.
Definition CbmFsdMC.h:32
virtual Bool_t CheckIfSensitive(std::string name)
Check whether a volume is sensitive.
Definition CbmFsdMC.h:70
virtual Bool_t ProcessHits(FairVolume *volume=0)
Stepping action.
Definition CbmFsdMC.cxx:78
CbmFsdMC operator=(const CbmFsdMC &)=delete
virtual void Register()
Register the output array.
Definition CbmFsdMC.h:131
virtual Bool_t IsSensitive(const std::string &name)
Check whether a volume is sensitive.
Definition CbmFsdMC.h:58
Int_t fTrackID
Output array.
Definition CbmFsdMC.h:144
TLorentzVector fMom
position
Definition CbmFsdMC.h:147
Double_t fTime
momentum
Definition CbmFsdMC.h:148
virtual void Print(Option_t *opt="") const
Screen log Prints current number of StsPoints in array. Virtual from TObject.
Definition CbmFsdMC.cxx:59
TClonesArray * fFsdPoints
Definition CbmFsdMC.h:141
virtual ~CbmFsdMC()
Definition CbmFsdMC.cxx:30
CbmFsdMC(Bool_t active=kTRUE, const char *name="FSDMC")
Constructor.
Definition CbmFsdMC.h:39
virtual void Reset()
Clear output array.
Definition CbmFsdMC.h:138
CbmFsdMC(const CbmFsdMC &)=delete
TLorentzVector fPos
address (module and layer)
Definition CbmFsdMC.h:146
Int_t fAddress
track index
Definition CbmFsdMC.h:145
virtual void EndOfEvent()
Action at end of event.
Definition CbmFsdMC.cxx:50
Double_t fEloss
length
Definition CbmFsdMC.h:150
virtual void ConstructGeometry()
Construct the FSD geometry in the TGeoManager.
Definition CbmFsdMC.cxx:41
void RegisterSensitiveVolumes(TGeoNode *node)
energy loss
Definition CbmFsdMC.cxx:120
virtual void Initialize()
Initialisation.
Definition CbmFsdMC.cxx:66
virtual TClonesArray * GetCollection(Int_t iColl) const
Get output array of CbmFsdPoints.
Definition CbmFsdMC.h:105
Double_t fLength
time
Definition CbmFsdMC.h:149