CbmRoot
Loading...
Searching...
No Matches
CbmPsdMC.h
Go to the documentation of this file.
1/* Copyright (C) 2017-2018 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Yuri Kharlov, Volker Friese [committer] */
4
12#ifndef CBMPSDMC_H
13#define CBMPSDMC_H 1
14
15#include "FairDetector.h"
16#include "FairRootManager.h"
17
18#include "TClonesArray.h"
19#include "TLorentzVector.h"
20#include "TString.h"
21
22class FairVolume;
23
24
34class CbmPsdMC : public FairDetector {
35
36public:
41 CbmPsdMC(Bool_t active = kTRUE, const char* name = "PSDMC");
42
43
45 virtual ~CbmPsdMC();
46
47
55 virtual Bool_t IsSensitive(const std::string& name)
56 {
57 return (TString(name).Contains("scint", TString::kIgnoreCase) ? kTRUE : kFALSE);
58 }
59
67 virtual Bool_t CheckIfSensitive(std::string name) { return IsSensitive(name); }
68
69
77 virtual void ConstructGeometry();
78
79
85 virtual void EndOfEvent();
86
87
93 virtual TClonesArray* GetCollection(Int_t iColl) const { return (iColl ? nullptr : fPsdPoints); }
94
95
100 virtual void Print(Option_t* opt = "") const;
101
102
112 virtual Bool_t ProcessHits(FairVolume* volume = 0);
113
114
119 virtual void Register() { FairRootManager::Instance()->Register("PsdPoint", GetName(), fPsdPoints, kTRUE); }
120
121
126 virtual void Reset() { fPsdPoints->Delete(); };
127
128
138 void SetPosition(Double_t xPos, Double_t zPos, Double_t rotY)
139 {
140 fPosX = xPos;
141 fPosZ = zPos;
142 fRotY = rotY;
143 fUserPlacement = kTRUE;
144 }
145
146
147private:
148 Double_t fPosX; // x position of PSD centre in cave [cm]
149 Double_t fPosZ; // z position of PSD centre in cave [cm]
150 Double_t fRotY; // Rotation angle of PSD around Y axis [degrees]
151 Bool_t fUserPlacement; // Flag to override placement from file
152 TClonesArray* fPsdPoints;
153
155 Int_t fTrackID;
156 Int_t fAddress;
157 TLorentzVector fPos;
158 TLorentzVector fMom;
159 Double_t fTime;
160 Double_t fLength;
161 Double_t fEloss;
162 Int_t fLayerID;
163 Int_t fModuleID;
164
172 void RegisterSensitiveVolumes(TGeoNode* node);
173
174
176 CbmPsdMC(const CbmPsdMC&) = delete;
177 CbmPsdMC operator=(const CbmPsdMC&) = delete;
178
179
180 ClassDef(CbmPsdMC, 1)
181};
182
183
184#endif //? CBMPSDMC_H
Class for the MC transport of the CBM-PSD.
Definition CbmPsdMC.h:34
Int_t fLayerID
energy loss
Definition CbmPsdMC.h:162
void SetPosition(Double_t xPos, Double_t zPos, Double_t rotY)
Define the PSD position in the cave.
Definition CbmPsdMC.h:138
virtual ~CbmPsdMC()
Definition CbmPsdMC.cxx:53
CbmPsdMC(const CbmPsdMC &)=delete
TClonesArray * fPsdPoints
Definition CbmPsdMC.h:152
virtual void ConstructGeometry()
Construct the PSD geometry in the TGeoManager.
Definition CbmPsdMC.cxx:64
virtual void Reset()
Clear output array.
Definition CbmPsdMC.h:126
CbmPsdMC(Bool_t active=kTRUE, const char *name="PSDMC")
Constructor.
Definition CbmPsdMC.cxx:31
Double_t fRotY
Definition CbmPsdMC.h:150
virtual void EndOfEvent()
Action at end of event.
Definition CbmPsdMC.cxx:156
virtual TClonesArray * GetCollection(Int_t iColl) const
Get output array of CbmPsdPoints.
Definition CbmPsdMC.h:93
virtual Bool_t ProcessHits(FairVolume *volume=0)
Stepping action.
Definition CbmPsdMC.cxx:173
void RegisterSensitiveVolumes(TGeoNode *node)
module ID
Definition CbmPsdMC.cxx:220
virtual Bool_t CheckIfSensitive(std::string name)
Check whether a volume is sensitive.
Definition CbmPsdMC.h:67
Bool_t fUserPlacement
Definition CbmPsdMC.h:151
CbmPsdMC operator=(const CbmPsdMC &)=delete
Int_t fModuleID
layer ID
Definition CbmPsdMC.h:163
Int_t fAddress
track index
Definition CbmPsdMC.h:156
TLorentzVector fMom
position
Definition CbmPsdMC.h:158
Int_t fTrackID
Output array.
Definition CbmPsdMC.h:155
Double_t fPosX
Definition CbmPsdMC.h:148
TLorentzVector fPos
address (module and layer)
Definition CbmPsdMC.h:157
Double_t fEloss
length
Definition CbmPsdMC.h:161
virtual void Print(Option_t *opt="") const
Screen log Prints current number of StsPoints in array. Virtual from TObject.
Definition CbmPsdMC.cxx:165
Double_t fPosZ
Definition CbmPsdMC.h:149
virtual Bool_t IsSensitive(const std::string &name)
Check whether a volume is sensitive.
Definition CbmPsdMC.h:55
Double_t fTime
momentum
Definition CbmPsdMC.h:159
Double_t fLength
time
Definition CbmPsdMC.h:160
virtual void Register()
Register the output array.
Definition CbmPsdMC.h:119