81 Class()->IgnoreTObjectStreamer(kTRUE);
88 if(frag ==
nullptr || chan ==
nullptr) {
109 std::vector<TFragment>::iterator front;
110 std::vector<TFragment>::iterator back;
111 std::vector<TFragment>::iterator pad;
114 bool front_used =
false;
115 bool back_used =
false;
117 if(front->GetDetector() == back->GetDetector()) {
123 if(front_used && back_used) {
135 for(
auto& fSharcHit :
Hits()) {
137 if(fSharcHit->GetDetector() == pad->GetDetector()) {
138 static_cast<TSharcHit*
>(fSharcHit)->SetPad(*pad);
148 for(
auto iter = to_remove->rbegin(); iter != to_remove->rend(); ++iter) {
152 hits->erase(hits->begin() + *iter);
164 if(strcmp(option,
"ALL") == 0) {
178 std::ostringstream str;
179 str <<
"not yet written..." << std::endl;
192 int FrontDet = detector;
193 int FrontStr = frontstrip;
195 int BackStr = backstrip;
199 TVector3 position_offset;
200 position_offset.SetXYZ(X, Y, Z);
202 if(FrontDet >= 5 && FrontDet <= 8) {
203 nrots = FrontDet - 4;
208 position.SetXYZ(x, y, z);
209 }
else if(FrontDet >= 9 && FrontDet <= 12) {
210 nrots = FrontDet - 8;
214 position.SetXYZ(x, y, z);
215 }
else if(FrontDet >= 13) {
216 nrots = FrontDet - 13;
220 position.SetXYZ(rho * TMath::Sin(phi), rho * TMath::Cos(phi), z);
221 }
else if(FrontDet <= 4) {
222 nrots = FrontDet - 1;
226 position.SetXYZ(rho * TMath::Sin(phi), rho * TMath::Cos(phi), z);
229 position.RotateZ(TMath::Pi() * nrots / 2);
230 return (position + position_offset);
235 static std::array<double, 16> fDetectorThickness = {998., 998., 998., 1001., 141., 142., 133., 143.,
236 999., 1001., 1001., 1002., 390., 390., 383., 385.};
241 double phi_90 = fmod(std::fabs(hit.
GetPosition().Phi()), TMath::Pi() / 2);
242 double phi_45 = phi_90;
243 if(phi_90 > (TMath::Pi() / 4.)) {
244 phi_45 = TMath::Pi() / 2 - phi_90;
248 return dist / (TMath::Sin(hit.
GetPosition().Theta()) * TMath::Cos(phi_45));
250 return std::fabs(dist / (TMath::Cos(hit.
GetPosition().Theta())));
255 static std::array<double, 16> fDeadLayerThickness = {0.7, 0.7, 0.7, 0.7, 0.1, 0.1, 0.1, 0.1,
256 0.1, 0.1, 0.1, 0.1, 0.7, 0.7, 0.7, 0.7};
262 static std::array<double, 16> fPadThickness = {0.0, 0.0, 0.0, 0.0, 1534, 1535, 1535, 1539,
263 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
269 static std::array<double, 16> fPadDeadLayerThickness = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0,
270 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
const TMnemonic * GetMnemonic() const
virtual Int_t GetDetector() const
!
void Copy(TObject &) const override
!
void Clear(Option_t *="") override
!
std::vector< TDetectorHit * > & Hits()
virtual void AddHit(TDetectorHit *hit)
virtual EMnemonic ArraySubPosition() const
virtual EMnemonic CollectedCharge() const
TVector3 GetPosition(Double_t dist) const override
!
void SetFront(const TFragment &frag)
!
void RemoveHits(std::vector< TSharcHit > *, std::set< int > *)
!
static double GetDeadLayerThickness(TSharcHit &hit)
void Clear(Option_t *="") override
!
static double fPdim
Rmax-Rmin for all QQQs.
static double fStripBPitch
static double fYdim
total X dimension of all boxes
std::vector< TFragment > fPadFragments
static double GetDetectorThickness(TSharcHit &hit, double dist=-1.0)
static double fZposDQ
degrees
static double fRdim
total Z dimension of all boxes
static TVector3 GetPosition(int detector, int frontstrip, int backstrip, double X=0.00, double Y=0.00, double Z=0.00)
!
static double fZdim
total Y dimension of all boxes
void Copy(TObject &) const override
!
static double GetPadThickness(TSharcHit &hit)
std::vector< TFragment > fFrontFragments
static double GetPadDeadLayerThickness(TSharcHit &hit)
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
void BuildHits() override
!
std::vector< TFragment > fBackFragments
static double fSegmentPitch
void Print(Option_t *="") const override
!
static double fXposUB
QQQ quadrant angular range (degrees)
static double fStripFPitch
degrees