15#ifndef ALICEO2_ITS_DETECTOR_H_
16#define ALICEO2_ITS_DETECTOR_H_
26#include "TGeoManager.h"
27#include "TLorentzVector.h"
107 std::vector<o2::itsmft::Hit>*
getHits(Int_t iColl)
const
117 void Reset()
override;
133 void defineLayer(Int_t nlay, Double_t phi0, Double_t
r, Int_t nladd, Int_t nmod, Double_t lthick = 0.,
134 Double_t dthick = 0., UInt_t detType = 0, Int_t buildFlag = 0)
override;
148 virtual void getLayerParameters(Int_t nlay, Double_t& phi0, Double_t&
r, Int_t& nladd, Int_t& nmod, Double_t&
width,
149 Double_t& tilt, Double_t& lthick, Double_t& mthick, UInt_t& dettype)
const;
153 const TVector3& startMom,
double startE,
double endTime,
double eLoss,
154 unsigned char startStatus,
unsigned char endStatus);
215 Int_t& lastUID)
const;
272 std::vector<o2::itsmft::Hit>*
mHits;
311 template <
typename Det>
329struct UseShm<
o2::its::Detector> {
330 static constexpr bool value =
true;
Definition of the Detector class.
Definition of the DescriptorInnerBarrelITS2 class.
Definition of the DescriptorInnerBarrelITS3 class.
Definition of the GeometryManager class.
Definition of the ITSMFT Hit class.
static int getSensID(o2::detectors::DetID detid, int sensid)
void createOuterBarrelSupports(TGeoVolume *motherVolume)
Double_t mWrapperZSpan[sNumberOfWrapperVolumes]
Max radius of wrapper volume.
void BeginPrimary() override
void addAlignableVolumesModule(Int_t lr, Int_t hb, Int_t st, Int_t hst, Int_t md, TString &parent, Int_t &lastUID) const
struct o2::its::Detector::TrackData mTrackData
~Detector() override
Default destructor.
Detector & operator=(const Detector &)
std::vector< int > mStavePerLayer
Vector of layer radii.
virtual void getLayerParameters(Int_t nlay, Double_t &phi0, Double_t &r, Int_t &nladd, Int_t &nmod, Double_t &width, Double_t &tilt, Double_t <hick, Double_t &mthick, UInt_t &dettype) const
void InitializeO2Detector() override
Initialization of the detector is done here.
std::vector< V3Layer * > mGeometry
Int_t chipVolUID(Int_t id) const
virtual void createMaterials()
Create the detector materials.
std::vector< double > mStaveWidth
Vector of chip thicknesses.
void defineLayer(Int_t nlay, Double_t phi0, Double_t r, Int_t nladd, Int_t nmod, Double_t lthick=0., Double_t dthick=0., UInt_t detType=0, Int_t buildFlag=0) override
void addAlignableVolumesLayer(Int_t lr, TString &parent, Int_t &lastUID) const
std::vector< double > mChipThickness
Vector of number of "units" per stave.
void createITSServices(TGeoVolume *motherVolume)
ClassDefOverride(Detector, 1)
void addAlignableVolumesHalfStave(Int_t lr, Int_t hb, Int_t st, Int_t hst, TString &parent, Int_t &lastUID) const
std::vector< int > mWrapperLayerId
Z span of wrapper volume.
void EndOfEvent() override
std::vector< double > mStaveTilt
Vector of stave width (only used for turbo)
std::vector< int > mBuildLevel
Vector of detector type id.
o2::itsmft::Hit * addHit(int trackID, int detID, const TVector3 &startPos, const TVector3 &endPos, const TVector3 &startMom, double startE, double endTime, double eLoss, unsigned char startStatus, unsigned char endStatus)
This method is an example of how to add your own point of type Hit to the clones array.
std::vector< bool > mTurboLayer
Id of wrapper layer to which layer belongs (-1 if not wrapped)
void constructDetectorGeometry()
Construct the detector geometry.
void Register() override
Registers the produced collections in FAIRRootManager.
std::vector< uint > mChipTypeID
Vector of detector thicknesses.
Double_t mWrapperMinRadius[sNumberOfWrapperVolumes]
Bool_t ProcessHits(FairVolume *v=nullptr) override
This method is called for each step during simulation (see FairMCApplication::Stepping())
void FinishPrimary() override
std::vector< int > mUnitPerStave
Vector of number of staves per layer.
void ConstructGeometry() override
Base class to create the detector geometry.
void addAlignableVolumesHalfBarrel(Int_t lr, Int_t hb, TString &parent, Int_t &lastUID) const
static constexpr Int_t sNumberOfWrapperVolumes
Number of wrapper volumes.
static constexpr Int_t sNumberOuterLayers
Number of outer layers in ITSU (fixed)
void addAlignableVolumes() const override
Add alignable top volumes.
std::vector< o2::itsmft::Hit > * getHits(Int_t iColl) const
Gets the produced collections.
void addAlignableVolumesChip(Int_t lr, Int_t hb, Int_t st, Int_t hst, Int_t md, Int_t ch, TString &parent, Int_t &lastUID) const
Detector()
Default constructor.
void defineSensitiveVolumes()
Define the sensitive volumes of the geometry.
void createOuterBarrelServices(TGeoVolume *motherVolume)
static o2::base::Detector * create(const char *name, bool active)
std::vector< double > mLayerPhi0
True for "turbo" layers.
void fillParallelWorld() const override
Add ITS chip volumes to parallel world geometry.
void PostTrack() override
int mNumberLayers
Number of inner layers (depends on ITS version)
Int_t getNumberOfLayers() const
Returns the number of layers.
V3Services * mServicesGeometry
Geometry.
std::vector< o2::itsmft::Hit > * mHits
Vector of Material Budget Studies.
void createMiddlBarrelServices(TGeoVolume *motherVolume)
std::vector< double > mLayerRadii
Vector of layer's 1st stave phi in lab.
std::vector< int > mLayerID
Number of layers (depends on inner layer version)
Double_t mWrapperMaxRadius[sNumberOfWrapperVolumes]
Min radius of wrapper volume.
Int_t mNumberOfDetectors
layer names
std::shared_ptr< DescriptorInnerBarrel > mDescriptorIB
Services Geometry.
std::vector< double > mDetectorThickness
Vector of stave tilt (only used for turbo)
void addAlignableVolumesStave(Int_t lr, Int_t hb, Int_t st, TString &parent, Int_t &lastUID) const
std::vector< TString > mLayerName
layer identifiers
TGeoVolume * createWrapperVolume(const Int_t nLay)
Creates an air-filled wrapper cylindrical volume.
void Reset() override
Has to be called after each event to reset the containers.
GeometryTGeo * mGeometryTGeo
void defineWrapperVolume(Int_t id, Double_t rmin, Double_t rmax, Double_t zspan) override
Set per wrapper volume parameters.
void configOuterBarrelITS(int nInnerBarrelLayers, int buildLevel=0)
We need this as a method to access members.
This class defines the Geometry for the Services of the ITS Upgrade using TGeo.
GLuint const GLchar * name
GLsizei GLsizei GLchar * source
GLsizei const GLfloat * value
std::ostream & operator<<(std::ostream &os, Detector &source)
std::istream & operator>>(std::istream &os, Detector &source)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
access to geometry details
double mEnergyLoss
momentum
TLorentzVector mMomentumStart
position at entrance
TLorentzVector mPositionStart
track status flag
unsigned char mTrkStatusStart
hit creation started