30#define CBMSTSSENSOR_H 1
39#include "TGeoManager.h"
41#include "TGeoVolume.h"
69 Double_t rotation, Double_t lx, Double_t ly,
70 Double_t dx, Double_t dy, Double_t stereoF, Double_t stereoB);
71 CbmStsSensor(TString tempName, Int_t detId, Int_t iType, Double_t x0, Double_t y0, Double_t
z0,
72 Double_t rotation, Double_t lx, Double_t ly,
73 Double_t
d, Double_t dx, Double_t dy, Double_t stereoF, Double_t stereoB);
84 return ( fDetectorId & (15<<24) ) >> 24; }
86 return ( fDetectorId & (255<<16) ) >> 16; }
88 return ( fDetectorId & (4095<<4) ) >> 4; }
92 return ( fDetectorId & (7<<1) ) >> 1; }
94 Double_t
GetX0()
const {
return fX0; }
95 Double_t
GetY0()
const {
return fY0; }
96 Double_t
GetZ0()
const {
return fZ0; }
98 Double_t
GetLx()
const {
return fLx; }
99 Double_t
GetLy()
const {
return fLy; }
100 Double_t
GetD()
const {
return fD; }
101 Double_t
GetDx()
const {
return fDx; }
102 Double_t
GetDy()
const {
return fDy; }
108 Int_t
GetNChannels()
const {
return fNChannelsFront + fNChannelsBack; }
153 std::vector<Double_t>& xCross, std::vector<Double_t>& yCross);
155 Int_t
Intersect(Int_t iFStrip, Int_t iBStrip, Double_t& xCross, Double_t& yCross, Double_t& zCross);
157 Int_t
IntersectClusters(Double_t fChan, Double_t bChan, Double_t& xCross, Double_t& yCross, Double_t& zCross);
179 TString GeoMaskSi[3][8];
180 TString GeoMaskGem[6][4];
181 TGeoVolume* TopVolume;
182 Double_t PIR = 3.1415926536 / 180.;
189 Double_t fX0, fY0, fZ0;
196 Double_t fTanF,fTanB,fSinRot,fCosRot;
201 Int_t fNChannelsFront;
202 Int_t fNChannelsBack;
204 Double_t fBackStripShift;
205 Double_t fFrontStripShift;
216 Double_t fXSmearWidth;
217 Double_t fZSmearSlope;
219 Double_t fFrontLorentzShift;
220 Double_t fBackLorentzShift;
223 std::set<Int_t> fFrontActive;
224 std::set<Int_t> fBackActive;
229 std::map<std::pair<Int_t,Int_t>, Int_t > fTrueHits;
241 Int_t FrontStripNumber(Double_t x, Double_t y)
const;
250 Int_t BackStripNumber(Double_t x, Double_t y)
const;
260 Bool_t IntCoord(Double_t x, Double_t y,
261 Double_t& xint, Double_t& yint)
const;
262 Bool_t IntCoord(Double_t x, Double_t y, Double_t z,
263 Double_t& xint, Double_t& yint, Double_t& zint)
const;
271 Bool_t IsInside(Double_t xint, Double_t yint)
const;
const Float_t d
Z-ccordinate of the first GEM-station.
Double_t GetStereoF() const
Double_t GetSigmaXY() const
Float_t GetChannelPlus(Double_t x, Double_t y, Int_t iSide)
Int_t GetSystemId() const
Double_t GetSigmaY() const
Double_t GetRotation() const
Int_t GetNChannelsFront() const
Int_t IntersectClusters(Double_t fChan, Double_t bChan, Double_t &xCross, Double_t &yCross, Double_t &zCross)
Double_t GetFrontStripShift() const
CbmStsSensor(Int_t detId, Int_t iType, Double_t x0, Double_t y0, Double_t rotation, Double_t lx, Double_t ly, Double_t dx, Double_t dy, Double_t stereoF, Double_t stereoB)
Int_t GetDetectorId() const
Int_t Intersect(Int_t iFStrip, Int_t iBStrip, Double_t &xCross, Double_t &yCross, Double_t &zCross)
TString GetDetectorName() const
Double_t GetBackStripShift() const
Int_t GetNChannelsBack() const
Int_t Intersect(Int_t iFStrip, Int_t iBStrip, std::vector< Double_t > &xCross, std::vector< Double_t > &yCross)
Bool_t Inside(Double_t x, Double_t y)
Int_t GetFrontChannel(Double_t x, Double_t y, Double_t z, Double_t &dPitch)
Int_t GetNChannels() const
Int_t GetBackChannel(Double_t x, Double_t y, Double_t z, Double_t &dPitch)
Bool_t ActivateChannels(Int_t ipt, Double_t x, Double_t y)
Int_t GetSectorNr() const
CbmStsSensor(TString tempName, Int_t detId, Int_t iType, Double_t x0, Double_t y0, Double_t z0, Double_t rotation, Double_t lx, Double_t ly, Double_t d, Double_t dx, Double_t dy, Double_t stereoF, Double_t stereoB)
Double_t GetSigmaX() const
Int_t GetStationNr() const
Int_t PointIndex(Int_t iFStrip, Int_t IBStrip)
Int_t GetChannel(Double_t x, Double_t y, Int_t iSide)
Double_t GetStereoB() const
Int_t GetSensorNr() const