GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TTigress.cxx
Go to the documentation of this file.
1#include "TTigress.h"
2
3#include <iostream>
4
5#include "TRandom.h"
6#include "TMath.h"
7#include "TClass.h"
8#include "TInterpreter.h"
9
10#include "TGRSIOptions.h"
11#include "TSortingDiagnostics.h"
12
13double TTigress::fTargetOffset = 0.;
14double TTigress::fRadialOffset = 0.;
15
16TTransientBits<UShort_t> TTigress::fGlobalTigressBits(ETigressGlobalBits::kSetCoreWave | ETigressGlobalBits::kSetBGOHits);
17
18// Why arent these TTigress class functions?
20{
21 // fHits vector is sorted by descending energy during detector construction
22 // Assumption for crystals and segments: higher energy = first interaction
23 // Checking for Scattering FROM "one" TO "two"
24
25 if(std::abs(one->GetTime() - two->GetTime()) < TGRSIOptions::AnalysisOptions()->AddbackWindow()) {
26 // segments of crystals have been sorted by descending energy during detector construction
27 // LastPosition is the position of lowest energy segment and GetPosition the highest energy segment (assumed
28 // first)
29 // Both return core position if no segments
30 double res = (static_cast<TTigressHit*>(one)->GetLastPosition() - static_cast<TTigressHit*>(two)->GetPosition()).Mag();
31
32 // In clover core separation 54.2564, 76.7367
33 // Between clovers core separation 74.2400 91.9550 (high-eff mode)
34 double seperation_limit = 93;
35
36 // Important to avoid GetSegmentVec segfaults for no segment or when we have cores only efficiency calibration
37 if(static_cast<TTigressHit*>(one)->GetSegmentMultiplicity() > 0 && static_cast<TTigressHit*>(two)->GetSegmentMultiplicity() > 0 && !TTigress::GetForceCrystal()) {
38 int one_seg = static_cast<TTigressHit*>(one)->GetSegmentVec().back().GetSegment();
39 int two_seg = static_cast<TTigressHit*>(two)->GetSegmentVec().front().GetSegment();
40
41 // front segment to front segment OR back segment to back segment
42 if((one_seg < 5 && two_seg < 5) || (one_seg > 4 && two_seg > 4)) {
43 seperation_limit = 54;
44 // front to back
45 } else if((one_seg < 5 && two_seg > 4) || (one_seg > 4 && two_seg < 5)) {
46 seperation_limit = 105;
47 }
48 }
49
50 if(res < seperation_limit) {
51 return true;
52 }
53 }
54
55 return false;
56}
57
59
61{
62 Float_t dCfd = static_cast<TTigressHit*>(tig)->GetCfd() - bgo.GetCfd();
63 return ((dCfd > -300. && dCfd < 200.) && (tig->GetDetector() == bgo.GetDetector()) && (bgo.GetEnergy() > 0));
64 // The old Suppression doesn't really work, the time gate is bad in GRIF-16s and the suppression scheme gives a bad Peak:Total - S. Gillespie
65
66 // return ((dCfd > -400 && dCfd < -80) && (tig->GetDetector() == bgo.GetDetector()) && (bgo.GetCharge() > 100.) &&
67 // TTigress::BGOSuppression[tig->GetCrystal()][bgo.GetCrystal()][bgo.GetSegment() - 1]);
68}
69
71
72std::underlying_type<TTigress::ETigressGlobalBits>::type operator|(TTigress::ETigressGlobalBits lhs, TTigress::ETigressGlobalBits rhs)
73{
74 return static_cast<std::underlying_type<TTigress::ETigressGlobalBits>::type>(lhs) |
75 static_cast<std::underlying_type<TTigress::ETigressGlobalBits>::type>(rhs);
76}
77
79{
80 Clear();
81}
82
84{
85 rhs.Copy(*this);
86}
87
88void TTigress::Copy(TObject& rhs) const
89{
90 TDetector::Copy(rhs);
91 static_cast<TTigress&>(rhs).fAddbackHits.resize(fAddbackHits.size());
92 for(size_t i = 0; i < fAddbackHits.size(); ++i) {
93 static_cast<TTigress&>(rhs).fAddbackHits[i] = new TTigressHit(*static_cast<TTigressHit*>(fAddbackHits[i]));
94 }
95 static_cast<TTigress&>(rhs).fAddbackFrags = fAddbackFrags;
96 static_cast<TTigress&>(rhs).fBgos = fBgos;
97 static_cast<TTigress&>(rhs).fTigressBits = 0;
98}
99
100void TTigress::Clear(Option_t* opt)
101{
102 // Clears the mother, and all of the hits
103 TDetector::Clear(opt);
104 // deleting the hits causes sef-faults for some reason
105 fAddbackHits.clear();
106 fAddbackFrags.clear();
107 fBgos.clear();
108 fTigressBits = 0;
109}
110
111void TTigress::Print(Option_t*) const
112{
113 Print(std::cout);
114}
115
116void TTigress::Print(std::ostream& out) const
117{
118 std::ostringstream str;
119 str << GetMultiplicity() << " tigress hits" << std::endl;
120 for(Short_t i = 0; i < GetMultiplicity(); i++) {
121 GetHit(i)->Print(str);
122 }
123 out << str.str();
124}
125
127{
128 rhs.Copy(*this);
129 return *this;
130}
131
133{
134 // Automatically builds the addback hits using the addback_criterion
135 // (if the size of the addback_hits vector is zero) and return the number of addback hits.
136 if(NoHits()) {
137 return 0;
138 }
139 // if the addback has been reset, clear the addback hits
141 // deleting the hits causes sef-faults for some reason
142 fAddbackHits.clear();
143 } else {
144 return fAddbackHits.size();
145 }
146
147 // use the first (highest E) tigress hit as starting point for the addback hits
148 fAddbackHits.push_back(GetHit(0));
149 fAddbackFrags.push_back(1);
150
151 // loop over remaining tigress hits
152 for(Short_t i = 1; i < GetMultiplicity(); i++) {
153 // check for each existing addback hit if this tigress hit should be added
154 size_t j = 0;
155 for(j = 0; j < fAddbackHits.size(); j++) {
157 // SumHit preserves time and position from first (highest E) hit, but adds segments so this hit becomes
158 // LastPosition()
159 static_cast<TTigressHit*>(fAddbackHits[j])->SumHit(static_cast<TTigressHit*>(GetHit(i))); // Adds
160 fAddbackFrags[j]++;
161 break;
162 }
163 }
164 // if hit[i] was not added to a higher energy hit, create its own addback hit
165 if(j == fAddbackHits.size()) {
166 fAddbackHits.push_back(GetHit(i));
167 static_cast<TTigressHit*>(fAddbackHits.back())->SumHit(static_cast<TTigressHit*>(fAddbackHits.back())); // Does nothing // then why are we doing this?
168 fAddbackFrags.push_back(1);
169 }
170 }
172
173 return fAddbackHits.size();
174}
175
177{
178 /// Get the ith addback hit. This function calls GetAddbackMultiplicity to check the range of the index.
179 /// This automatically calculates all addback hits if they haven't been calculated before.
180 if(i < GetAddbackMultiplicity()) {
181 return static_cast<TTigressHit*>(fAddbackHits.at(i));
182 }
183 std::cerr << "Addback hits are out of range" << std::endl;
184 throw grsi::exit_exception(1);
185 return nullptr;
186}
187
189{
190 // remove all hits of segments only
191 // remove_if moves all elements to be removed to the end and returns an iterator to the first one to be removed
192 auto remove = std::remove_if(Hits().begin(), Hits().end(), [](TDetectorHit* h) -> bool { return !(static_cast<TTigressHit*>(h)->CoreSet()); });
193 // using remove_if the elements to be removed are left in an undefined state so we can only log how many we are removing!
194 TSortingDiagnostics::Get()->RemovedHits(IsA(), std::distance(remove, Hits().end()), Hits().size());
195 Hits().erase(remove, Hits().end());
196 for(auto& hit : Hits()) {
197 auto* tigressHit = static_cast<TTigressHit*>(hit);
198 if(tigressHit->GetNSegments() > 1) {
199 tigressHit->SortSegments();
200 }
201
202 if(tigressHit->HasWave() && TGRSIOptions::AnalysisOptions()->IsWaveformFitting()) {
203 tigressHit->SetWavefit();
204 }
205 }
206 if(!NoHits()) {
207 std::sort(Hits().begin(), Hits().end());
208 }
209
210 // Label all hits as being suppressed or not
211 for(auto& fTigressHit : Hits()) {
212 bool suppressed = false;
213 for(auto& fBgo : fBgos) {
214 if(fSuppressionCriterion(fTigressHit, fBgo)) {
215 suppressed = true;
216 break;
217 }
218 }
219 static_cast<TTigressHit*>(fTigressHit)->SetBGOFired(suppressed);
220 }
221}
222
223void TTigress::AddFragment(const std::shared_ptr<const TFragment>& frag, TChannel* chan)
224{
225 if(frag == nullptr || chan == nullptr) {
226 return;
227 }
228
230 (chan->GetSegmentNumber() == 0 || chan->GetSegmentNumber() == 9)) { // it is a core
231
232 auto* corehit = new TTigressHit;
233 // loop over existing hits to see if this core was already created by a previously found segment
234 // of course this means if we have a core in "coincidence" with itself we will overwrite the first hit
235 for(Short_t i = 0; i < GetMultiplicity(); ++i) {
236 TTigressHit* hit = GetTigressHit(i);
237 if((hit->GetDetector() == chan->GetDetectorNumber()) &&
238 (hit->GetCrystal() == chan->GetCrystalNumber())) { // we have a match;
239
240 // B cores will not replace A cores,
241 // but they will replace no-core hits created if segments are processed first.
243 TChannel* hitchan = hit->GetChannel();
244 if(hitchan != nullptr) {
246 return;
247 }
248 }
249 }
250
251 hit->CopyFragment(*frag);
252 hit->CoreSet(true);
254 frag->CopyWave(*hit);
255 }
256 return;
257 }
258 }
259 corehit->CopyFragment(*frag);
260 corehit->CoreSet(true);
262 frag->CopyWave(*corehit);
263 }
264 AddHit(corehit);
265 return;
266 }
267 if(chan->GetMnemonic()->SubSystem() == TMnemonic::EMnemonic::kG) { // its ge but its not a core...
268 TDetectorHit temp(*frag);
269 for(Short_t i = 0; i < GetMultiplicity(); ++i) {
270 TTigressHit* hit = GetTigressHit(i);
271 if((hit->GetDetector() == chan->GetDetectorNumber()) &&
272 (hit->GetCrystal() == chan->GetCrystalNumber())) { // we have a match;
274 frag->CopyWave(temp);
275 }
276 hit->AddSegment(temp);
277 return;
278 }
279 }
280 auto* corehit = new TTigressHit;
281 corehit->SetAddress((frag->GetAddress())); // fake it till you make it
283 frag->CopyWave(temp);
284 }
285 corehit->AddSegment(temp);
286 AddHit(corehit);
287 return;
288 }
290 TBgoHit temp(*frag);
291 fBgos.push_back(temp);
292 return;
293 }
294 // if not suprress errors;
295 std::cout << ALERTTEXT << "failed to build!" << RESET_COLOR << std::endl;
296 frag->Print();
297}
298
300{
301 /// Used to clear the addback hits. When playing back a tree, this must
302 /// be called before building the new addback hits, otherwise, a copy of
303 /// the old addback hits will be stored instead.
304 /// This should have changed now, we're using the stored tigress bits to reset the addback
306 // deleting the hits causes sef-faults for some reason
307 fAddbackHits.clear();
308 fAddbackFrags.clear();
309}
310
311UShort_t TTigress::GetNAddbackFrags(size_t idx) const
312{
313 // Get the number of addback "fragments" contributing to the total addback hit
314 // with index idx.
315 if(idx < fAddbackFrags.size()) {
316 return fAddbackFrags.at(idx);
317 }
318 return 0;
319}
320
321TVector3 TTigress::GetPosition(const TTigressHit& hit, double dist, bool smear)
322{
323 return TTigress::GetPosition(hit.GetDetector(), hit.GetCrystal(), hit.GetFirstSeg(), dist, smear);
324}
325
326TVector3 TTigress::GetPosition(int DetNbr, int CryNbr, int SegNbr, double dist, bool smear)
327{
328 if(!GetVectorsBuilt()) {
329 BuildVectors();
330 }
331
332 int BackPos = 0;
333
334 // Would be good to get rid of "dist" and just use SetArrayBackPos, but leaving in for old codes.
335 if(dist > 0) {
336 if(dist > 140.) { BackPos = 1; }
337 } else if(GetArrayBackPos()) {
338 BackPos = 1;
339 }
340
341 if(smear && SegNbr == 0) {
342 double x = 0.;
343 double y = 0.;
344 double r = sqrt(gRandom->Uniform(0, 400));
345 gRandom->Circle(x, y, r);
346 return fPositionVectors[BackPos][DetNbr][CryNbr][SegNbr] + fCloverCross[DetNbr][0] * x + fCloverCross[DetNbr][1] * y;
347 }
348
349 return fPositionVectors[BackPos][DetNbr][CryNbr][SegNbr];
350}
351
353{
354 for(int Back = 0; Back < 2; Back++) {
355 for(int DetNbr = 0; DetNbr < 17; DetNbr++) {
356 for(int CryNbr = 0; CryNbr < 4; CryNbr++) {
357 for(int SegNbr = 0; SegNbr < 9; SegNbr++) {
358 TVector3 det_pos;
359 double xx = 0;
360 double yy = 0;
361 double zz = 0;
362
363 if(Back == 1) { // distance=145.0
364 switch(CryNbr) {
365 case -1: break;
366 case 0:
367 xx = fGeBluePositionBack[DetNbr][SegNbr][0];
368 yy = fGeBluePositionBack[DetNbr][SegNbr][1];
369 zz = fGeBluePositionBack[DetNbr][SegNbr][2];
370 break;
371 case 1:
372 xx = fGeGreenPositionBack[DetNbr][SegNbr][0];
373 yy = fGeGreenPositionBack[DetNbr][SegNbr][1];
374 zz = fGeGreenPositionBack[DetNbr][SegNbr][2];
375 break;
376 case 2:
377 xx = fGeRedPositionBack[DetNbr][SegNbr][0];
378 yy = fGeRedPositionBack[DetNbr][SegNbr][1];
379 zz = fGeRedPositionBack[DetNbr][SegNbr][2];
380 break;
381 case 3:
382 xx = fGeWhitePositionBack[DetNbr][SegNbr][0];
383 yy = fGeWhitePositionBack[DetNbr][SegNbr][1];
384 zz = fGeWhitePositionBack[DetNbr][SegNbr][2];
385 break;
386 };
387 } else {
388 switch(CryNbr) {
389 case -1: break;
390 case 0:
391 xx = fGeBluePosition[DetNbr][SegNbr][0];
392 yy = fGeBluePosition[DetNbr][SegNbr][1];
393 zz = fGeBluePosition[DetNbr][SegNbr][2];
394 break;
395 case 1:
396 xx = fGeGreenPosition[DetNbr][SegNbr][0];
397 yy = fGeGreenPosition[DetNbr][SegNbr][1];
398 zz = fGeGreenPosition[DetNbr][SegNbr][2];
399 break;
400 case 2:
401 xx = fGeRedPosition[DetNbr][SegNbr][0];
402 yy = fGeRedPosition[DetNbr][SegNbr][1];
403 zz = fGeRedPosition[DetNbr][SegNbr][2];
404 break;
405 case 3:
406 xx = fGeWhitePosition[DetNbr][SegNbr][0];
407 yy = fGeWhitePosition[DetNbr][SegNbr][1];
408 zz = fGeWhitePosition[DetNbr][SegNbr][2];
409 break;
410 };
411 }
412
413 det_pos.SetXYZ(xx, yy, zz - fTargetOffset);
414
415 if(fRadialOffset != 0.) {
416 det_pos += fCloverRadial[DetNbr].Unit() * fRadialOffset;
417 }
418
419 fPositionVectors[Back][DetNbr][CryNbr][SegNbr] = det_pos;
420 }
421 }
422 }
423 }
424
425 for(int DetNbr = 0; DetNbr < 17; DetNbr++) {
426 TVector3 a(-fCloverRadial[DetNbr].Y(), fCloverRadial[DetNbr].X(), 0);
427 TVector3 b = fCloverRadial[DetNbr].Cross(a);
428 fCloverCross[DetNbr][0] = a.Unit();
429 fCloverCross[DetNbr][1] = b.Unit();
430 }
431
433}
434
435std::array<std::array<std::array<std::array<TVector3, 9>, 4>, 17>, 2> TTigress::fPositionVectors;
436std::array<std::array<TVector3, 2>, 17> TTigress::fCloverCross;
437
438std::array<TVector3, 17> TTigress::fCloverRadial = {TVector3(0., 0., 0.),
439 TVector3(0.9239, 0.3827, 1.),
440 TVector3(-0.3827, 0.9239, 1.),
441 TVector3(-0.9239, -0.3827, 1.),
442 TVector3(0.3827, -0.9239, 1.),
443 TVector3(0.9239, 0.3827, 0.),
444 TVector3(0.3827, 0.9239, 0.),
445 TVector3(-0.3827, 0.9239, 0.),
446 TVector3(-0.9239, 0.3827, 0.),
447 TVector3(-0.9239, -0.3827, 0.),
448 TVector3(-0.3827, -0.9239, 0.),
449 TVector3(0.3827, -0.9239, 0.),
450 TVector3(0.9239, -0.3827, 0.),
451 TVector3(0.9239, 0.3827, -1.),
452 TVector3(-0.3827, 0.9239, -1.),
453 TVector3(-0.9239, -0.3827, -1.),
454 TVector3(0.3827, -0.9239, -1.)};
455
456std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeBluePosition = {{{{{0., 0., 0.},
457 {0., 0., 0.},
458 {0., 0., 0.},
459 {0., 0., 0.},
460 {0., 0., 0.},
461 {0., 0., 0.},
462 {0., 0., 0.},
463 {0., 0., 0.},
464 {0., 0., 0.}}},
465 {{{78.05, 61.70, 134.09},
466 {47.83, 59.64, 119.06},
467 {63.65, 65.78, 102.12},
468 {72.14, 44.72, 103.15},
469 {57.26, 37.61, 118.80},
470 {72.73, 73.96, 152.77},
471 {89.31, 81.09, 134.70},
472 {99.39, 57.11, 134.51},
473 {82.33, 50.30, 152.93}}},
474 {{{-61.70, 78.05, 134.09},
475 {-59.64, 47.83, 119.06},
476 {-65.78, 63.65, 102.12},
477 {-44.72, 72.14, 103.15},
478 {-37.61, 57.26, 118.80},
479 {-73.96, 72.73, 152.77},
480 {-81.09, 89.31, 134.70},
481 {-57.11, 99.39, 134.51},
482 {-50.30, 82.33, 152.93}}},
483 {{{-78.05, -61.70, 134.09},
484 {-47.83, -59.64, 119.06},
485 {-63.65, -65.78, 102.12},
486 {-72.14, -44.72, 103.15},
487 {-57.26, -37.61, 118.80},
488 {-72.73, -73.96, 152.77},
489 {-89.31, -81.09, 134.70},
490 {-99.39, -57.11, 134.51},
491 {-82.33, -50.30, 152.93}}},
492 {{{61.70, -78.05, 134.09},
493 {59.64, -47.83, 119.06},
494 {65.78, -63.65, 102.12},
495 {44.72, -72.14, 103.15},
496 {37.61, -57.26, 118.80},
497 {73.96, -72.73, 152.77},
498 {81.09, -89.31, 134.70},
499 {57.11, -99.39, 134.51},
500 {50.30, -82.33, 152.93}}},
501 {{{139.75, 87.25, 27.13},
502 {107.47, 84.35, 36.80},
503 {107.64, 84.01, 12.83},
504 {116.86, 63.25, 13.71},
505 {116.66, 62.21, 36.42},
506 {146.69, 104.60, 40.50},
507 {146.58, 104.81, 14.96},
508 {156.50, 80.77, 14.73},
509 {156.44, 80.99, 40.74}}},
510 {{{37.12, 160.51, 27.13},
511 {16.35, 135.64, 36.80},
512 {16.71, 135.51, 12.83},
513 {37.91, 127.36, 13.71},
514 {38.50, 126.48, 36.42},
515 {29.76, 177.69, 40.50},
516 {29.53, 177.76, 14.96},
517 {53.55, 167.78, 14.73},
518 {53.35, 167.89, 40.74}}},
519 {{{-87.25, 139.75, 27.13},
520 {-84.35, 107.47, 36.80},
521 {-84.01, 107.64, 12.83},
522 {-63.25, 116.86, 13.71},
523 {-62.21, 116.66, 36.42},
524 {-104.60, 146.69, 40.50},
525 {-104.81, 146.58, 14.96},
526 {-80.77, 156.50, 14.73},
527 {-80.99, 156.44, 40.74}}},
528 {{{-160.51, 37.12, 27.13},
529 {-135.64, 16.35, 36.80},
530 {-135.51, 16.71, 12.83},
531 {-127.36, 37.91, 13.71},
532 {-126.48, 38.50, 36.42},
533 {-177.69, 29.76, 40.50},
534 {-177.76, 29.53, 14.96},
535 {-167.78, 53.55, 14.73},
536 {-167.89, 53.35, 40.74}}},
537 {{{-139.75, -87.25, 27.13},
538 {-107.47, -84.35, 36.80},
539 {-107.64, -84.01, 12.83},
540 {-116.86, -63.25, 13.71},
541 {-116.66, -62.21, 36.42},
542 {-146.69, -104.60, 40.50},
543 {-146.58, -104.81, 14.96},
544 {-156.50, -80.77, 14.73},
545 {-156.44, -80.99, 40.74}}},
546 {{{-37.12, -160.51, 27.13},
547 {-16.35, -135.64, 36.80},
548 {-16.71, -135.51, 12.83},
549 {-37.91, -127.36, 13.71},
550 {-38.50, -126.48, 36.42},
551 {-29.76, -177.69, 40.50},
552 {-29.53, -177.76, 14.96},
553 {-53.55, -167.78, 14.73},
554 {-53.35, -167.89, 40.74}}},
555 {{{87.25, -139.75, 27.13},
556 {84.35, -107.47, 36.80},
557 {84.01, -107.64, 12.83},
558 {63.25, -116.86, 13.71},
559 {62.21, -116.66, 36.42},
560 {104.60, -146.69, 40.50},
561 {104.81, -146.58, 14.96},
562 {80.77, -156.50, 14.73},
563 {80.99, -156.44, 40.74}}},
564 {{{160.51, -37.12, 27.13},
565 {135.64, -16.35, 36.80},
566 {135.51, -16.71, 12.83},
567 {127.36, -37.91, 13.71},
568 {126.48, -38.50, 36.42},
569 {177.69, -29.76, 40.50},
570 {177.76, -29.53, 14.96},
571 {167.78, -53.55, 14.73},
572 {167.89, -53.35, 40.74}}},
573 {{{113.50, 76.38, -95.72},
574 {95.91, 79.56, -67.01},
575 {80.41, 72.73, -83.98},
576 {90.05, 52.14, -83.76},
577 {104.85, 57.32, -67.30},
578 {125.64, 95.88, -95.49},
579 {108.85, 89.19, -113.54},
580 {118.64, 65.08, -113.68},
581 {135.56, 72.34, -95.31}}},
582 {{{-76.38, 113.50, -95.72},
583 {-79.56, 95.91, -67.01},
584 {-72.73, 80.41, -83.98},
585 {-52.14, 90.05, -83.76},
586 {-57.32, 104.85, -67.30},
587 {-95.88, 125.64, -95.49},
588 {-89.19, 108.85, -113.54},
589 {-65.08, 118.64, -113.68},
590 {-72.34, 135.56, -95.31}}},
591 {{{-113.50, -76.38, -95.72},
592 {-95.91, -79.56, -67.01},
593 {-80.41, -72.73, -83.98},
594 {-90.05, -52.14, -83.76},
595 {-104.85, -57.32, -67.30},
596 {-125.64, -95.88, -95.49},
597 {-108.85, -89.19, -113.54},
598 {-118.64, -65.08, -113.68},
599 {-135.56, -72.34, -95.31}}},
600 {{{76.38, -113.50, -95.72},
601 {79.56, -95.91, -67.01},
602 {72.73, -80.41, -83.98},
603 {52.14, -90.05, -83.76},
604 {57.32, -104.85, -67.30},
605 {95.88, -125.64, -95.49},
606 {89.19, -108.85, -113.54},
607 {65.08, -118.64, -113.68},
608 {72.34, -135.56, -95.31}}}}};
609
610// Assuming this is the 1
611std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeGreenPosition = {{{{{0., 0., 0.},
612 {0., 0., 0.},
613 {0., 0., 0.},
614 {0., 0., 0.},
615 {0., 0., 0.},
616 {0., 0., 0.},
617 {0., 0., 0.},
618 {0., 0., 0.},
619 {0., 0., 0.}}},
620 {{{113.50, 76.38, 95.72},
621 {95.91, 79.56, 67.01},
622 {104.85, 57.32, 67.30},
623 {90.05, 52.14, 83.76},
624 {80.41, 72.73, 83.98},
625 {125.64, 95.88, 95.49},
626 {135.56, 72.34, 95.31},
627 {118.64, 65.08, 113.68},
628 {108.85, 89.19, 113.54}}},
629 {{{-76.38, 113.50, 95.72},
630 {-79.56, 95.91, 67.01},
631 {-57.32, 104.85, 67.30},
632 {-52.14, 90.05, 83.76},
633 {-72.73, 80.41, 83.98},
634 {-95.88, 125.64, 95.49},
635 {-72.34, 135.56, 95.31},
636 {-65.08, 118.64, 113.68},
637 {-89.19, 108.85, 113.54}}},
638 {{{-113.50, -76.38, 95.72},
639 {-95.91, -79.56, 67.01},
640 {-104.85, -57.32, 67.30},
641 {-90.05, -52.14, 83.76},
642 {-80.41, -72.73, 83.98},
643 {-125.64, -95.88, 95.49},
644 {-135.56, -72.34, 95.31},
645 {-118.64, -65.08, 113.68},
646 {-108.85, -89.19, 113.54}}},
647 {{{76.38, -113.50, 95.72},
648 {79.56, -95.91, 67.01},
649 {57.32, -104.85, 67.30},
650 {52.14, -90.05, 83.76},
651 {72.73, -80.41, 83.98},
652 {95.88, -125.64, 95.49},
653 {72.34, -135.56, 95.31},
654 {65.08, -118.64, 113.68},
655 {89.19, -108.85, 113.54}}},
656 {{{139.75, 87.25, -27.13},
657 {107.47, 84.35, -36.80},
658 {116.66, 62.21, -36.42},
659 {116.86, 63.25, -13.71},
660 {107.64, 84.01, -12.83},
661 {146.69, 104.60, -40.50},
662 {156.44, 80.99, -40.74},
663 {156.50, 80.77, -14.73},
664 {146.58, 104.81, -14.96}}},
665 {{{37.12, 160.51, -27.13},
666 {16.35, 135.64, -36.80},
667 {38.50, 126.48, -36.42},
668 {37.91, 127.36, -13.71},
669 {16.71, 135.51, -12.83},
670 {29.76, 177.69, -40.50},
671 {53.35, 167.89, -40.74},
672 {53.55, 167.78, -14.73},
673 {29.53, 177.76, -14.96}}},
674 {{{-87.25, 139.75, -27.13},
675 {-84.35, 107.47, -36.80},
676 {-62.21, 116.66, -36.42},
677 {-63.25, 116.86, -13.71},
678 {-84.01, 107.64, -12.83},
679 {-104.60, 146.69, -40.50},
680 {-80.99, 156.44, -40.74},
681 {-80.77, 156.50, -14.73},
682 {-104.81, 146.58, -14.96}}},
683 {{{-160.51, 37.12, -27.13},
684 {-135.64, 16.35, -36.80},
685 {-126.48, 38.50, -36.42},
686 {-127.36, 37.91, -13.71},
687 {-135.51, 16.71, -12.83},
688 {-177.69, 29.76, -40.50},
689 {-167.89, 53.35, -40.74},
690 {-167.78, 53.55, -14.73},
691 {-177.76, 29.53, -14.96}}},
692 {{{-139.75, -87.25, -27.13},
693 {-107.47, -84.35, -36.80},
694 {-116.66, -62.21, -36.42},
695 {-116.86, -63.25, -13.71},
696 {-107.64, -84.01, -12.83},
697 {-146.69, -104.60, -40.50},
698 {-156.44, -80.99, -40.74},
699 {-156.50, -80.77, -14.73},
700 {-146.58, -104.81, -14.96}}},
701 {{{-37.12, -160.51, -27.13},
702 {-16.35, -135.64, -36.80},
703 {-38.50, -126.48, -36.42},
704 {-37.91, -127.36, -13.71},
705 {-16.71, -135.51, -12.83},
706 {-29.76, -177.69, -40.50},
707 {-53.35, -167.89, -40.74},
708 {-53.55, -167.78, -14.73},
709 {-29.53, -177.76, -14.96}}},
710 {{{87.25, -139.75, -27.13},
711 {84.35, -107.47, -36.80},
712 {62.21, -116.66, -36.42},
713 {63.25, -116.86, -13.71},
714 {84.01, -107.64, -12.83},
715 {104.60, -146.69, -40.50},
716 {80.99, -156.44, -40.74},
717 {80.77, -156.50, -14.73},
718 {104.81, -146.58, -14.96}}},
719 {{{160.51, -37.12, -27.13},
720 {135.64, -16.35, -36.80},
721 {126.48, -38.50, -36.42},
722 {127.36, -37.91, -13.71},
723 {135.51, -16.71, -12.83},
724 {177.69, -29.76, -40.50},
725 {167.89, -53.35, -40.74},
726 {167.78, -53.55, -14.73},
727 {177.76, -29.53, -14.96}}},
728 {{{78.05, 61.70, -134.09},
729 {47.83, 59.64, -119.06},
730 {57.26, 37.61, -118.80},
731 {72.14, 44.72, -103.15},
732 {63.65, 65.78, -102.12},
733 {72.73, 73.96, -152.77},
734 {82.33, 50.30, -152.93},
735 {99.39, 57.11, -134.51},
736 {89.31, 81.09, -134.70}}},
737 {{{-61.70, 78.05, -134.09},
738 {-59.64, 47.83, -119.06},
739 {-37.61, 57.26, -118.80},
740 {-44.72, 72.14, -103.15},
741 {-65.78, 63.65, -102.12},
742 {-73.96, 72.73, -152.77},
743 {-50.30, 82.33, -152.93},
744 {-57.11, 99.39, -134.51},
745 {-81.09, 89.31, -134.70}}},
746 {{{-78.05, -61.70, -134.09},
747 {-47.83, -59.64, -119.06},
748 {-57.26, -37.61, -118.80},
749 {-72.14, -44.72, -103.15},
750 {-63.65, -65.78, -102.12},
751 {-72.73, -73.96, -152.77},
752 {-82.33, -50.30, -152.93},
753 {-99.39, -57.11, -134.51},
754 {-89.31, -81.09, -134.70}}},
755 {{{61.70, -78.05, -134.09},
756 {59.64, -47.83, -119.06},
757 {37.61, -57.26, -118.80},
758 {44.72, -72.14, -103.15},
759 {65.78, -63.65, -102.12},
760 {73.96, -72.73, -152.77},
761 {50.30, -82.33, -152.93},
762 {57.11, -99.39, -134.51},
763 {81.09, -89.31, -134.70}}}}};
764
765// Assuming this is the 2
766std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeRedPosition = {{{{{0., 0., 0.},
767 {0., 0., 0.},
768 {0., 0., 0.},
769 {0., 0., 0.},
770 {0., 0., 0.},
771 {0., 0., 0.},
772 {0., 0., 0.},
773 {0., 0., 0.},
774 {0., 0., 0.}}},
775 {{{134.26, 26.25, 95.72},
776 {124.08, 11.56, 67.01},
777 {108.28, 5.43, 83.98},
778 {100.55, 26.81, 83.76},
779 {114.67, 33.61, 67.30},
780 {156.64, 21.05, 95.49},
781 {140.03, 13.91, 113.54},
782 {129.91, 37.87, 113.68},
783 {147.01, 44.70, 95.31}}},
784 {{{-26.25, 134.26, 95.72},
785 {-11.56, 124.08, 67.01},
786 {-5.43, 108.28, 83.98},
787 {-26.81, 100.55, 83.76},
788 {-33.61, 114.67, 67.30},
789 {-21.05, 156.64, 95.49},
790 {-13.91, 140.03, 113.54},
791 {-37.87, 129.91, 113.68},
792 {-44.70, 147.01, 95.31}}},
793 {{{-134.26, -26.25, 95.72},
794 {-124.08, -11.56, 67.01},
795 {-108.28, -5.43, 83.98},
796 {-100.55, -26.81, 83.76},
797 {-114.67, -33.61, 67.30},
798 {-156.64, -21.05, 95.49},
799 {-140.03, -13.91, 113.54},
800 {-129.91, -37.87, 113.68},
801 {-147.01, -44.70, 95.31}}},
802 {{{26.25, -134.26, 95.72},
803 {11.56, -124.08, 67.01},
804 {5.43, -108.28, 83.98},
805 {26.81, -100.55, 83.76},
806 {33.61, -114.67, 67.30},
807 {21.05, -156.64, 95.49},
808 {13.91, -140.03, 113.54},
809 {37.87, -129.91, 113.68},
810 {44.70, -147.01, 95.31}}},
811 {{{160.51, 37.12, -27.13},
812 {135.64, 16.35, -36.80},
813 {135.51, 16.71, -12.83},
814 {127.36, 37.91, -13.71},
815 {126.48, 38.50, -36.42},
816 {177.69, 29.76, -40.50},
817 {177.76, 29.53, -14.96},
818 {167.78, 53.55, -14.73},
819 {167.89, 53.35, -40.74}}},
820 {{{87.25, 139.75, -27.13},
821 {84.35, 107.47, -36.80},
822 {84.01, 107.64, -12.83},
823 {63.25, 116.86, -13.71},
824 {62.21, 116.66, -36.42},
825 {104.60, 146.69, -40.50},
826 {104.81, 146.58, -14.96},
827 {80.77, 156.50, -14.73},
828 {80.99, 156.44, -40.74}}},
829 {{{-37.12, 160.51, -27.13},
830 {-16.35, 135.64, -36.80},
831 {-16.71, 135.51, -12.83},
832 {-37.91, 127.36, -13.71},
833 {-38.50, 126.48, -36.42},
834 {-29.76, 177.69, -40.50},
835 {-29.53, 177.76, -14.96},
836 {-53.55, 167.78, -14.73},
837 {-53.35, 167.89, -40.74}}},
838 {{{-139.75, 87.25, -27.13},
839 {-107.47, 84.35, -36.80},
840 {-107.64, 84.01, -12.83},
841 {-116.86, 63.25, -13.71},
842 {-116.66, 62.21, -36.42},
843 {-146.69, 104.60, -40.50},
844 {-146.58, 104.81, -14.96},
845 {-156.50, 80.77, -14.73},
846 {-156.44, 80.99, -40.74}}},
847 {{{-160.51, -37.12, -27.13},
848 {-135.64, -16.35, -36.80},
849 {-135.51, -16.71, -12.83},
850 {-127.36, -37.91, -13.71},
851 {-126.48, -38.50, -36.42},
852 {-177.69, -29.76, -40.50},
853 {-177.76, -29.53, -14.96},
854 {-167.78, -53.55, -14.73},
855 {-167.89, -53.35, -40.74}}},
856 {{{-87.25, -139.75, -27.13},
857 {-84.35, -107.47, -36.80},
858 {-84.01, -107.64, -12.83},
859 {-63.25, -116.86, -13.71},
860 {-62.21, -116.66, -36.42},
861 {-104.60, -146.69, -40.50},
862 {-104.81, -146.58, -14.96},
863 {-80.77, -156.50, -14.73},
864 {-80.99, -156.44, -40.74}}},
865 {{{37.12, -160.51, -27.13},
866 {16.35, -135.64, -36.80},
867 {16.71, -135.51, -12.83},
868 {37.91, -127.36, -13.71},
869 {38.50, -126.48, -36.42},
870 {29.76, -177.69, -40.50},
871 {29.53, -177.76, -14.96},
872 {53.55, -167.78, -14.73},
873 {53.35, -167.89, -40.74}}},
874 {{{139.75, -87.25, -27.13},
875 {107.47, -84.35, -36.80},
876 {107.64, -84.01, -12.83},
877 {116.86, -63.25, -13.71},
878 {116.66, -62.21, -36.42},
879 {146.69, -104.60, -40.50},
880 {146.58, -104.81, -14.96},
881 {156.50, -80.77, -14.73},
882 {156.44, -80.99, -40.74}}},
883 {{{98.82, 11.57, -134.09},
884 {75.99, -8.35, -119.06},
885 {91.52, -1.51, -102.12},
886 {82.63, 19.39, -103.15},
887 {67.08, 13.90, -118.80},
888 {103.72, -0.87, -152.77},
889 {120.49, 5.81, -134.70},
890 {110.66, 29.90, -134.51},
891 {93.78, 22.65, -152.93}}},
892 {{{-11.57, 98.82, -134.09},
893 {8.35, 75.99, -119.06},
894 {1.51, 91.52, -102.12},
895 {-19.39, 82.63, -103.15},
896 {-13.90, 67.08, -118.80},
897 {0.87, 103.72, -152.77},
898 {-5.81, 120.49, -134.70},
899 {-29.90, 110.66, -134.51},
900 {-22.65, 93.78, -152.93}}},
901 {{{-98.82, -11.57, -134.09},
902 {-75.99, 8.35, -119.06},
903 {-91.52, 1.51, -102.12},
904 {-82.63, -19.39, -103.15},
905 {-67.08, -13.90, -118.80},
906 {-103.72, 0.87, -152.77},
907 {-120.49, -5.81, -134.70},
908 {-110.66, -29.90, -134.51},
909 {-93.78, -22.65, -152.93}}},
910 {{{11.57, -98.82, -134.09},
911 {-8.35, -75.99, -119.06},
912 {-1.51, -91.52, -102.12},
913 {19.39, -82.63, -103.15},
914 {13.90, -67.08, -118.80},
915 {-0.87, -103.72, -152.77},
916 {5.81, -120.49, -134.70},
917 {29.90, -110.66, -134.51},
918 {22.65, -93.78, -152.93}}}}};
919
920// Assuming this is the 3
921std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeWhitePosition = {{{{{0., 0., 0.},
922 {0., 0., 0.},
923 {0., 0., 0.},
924 {0., 0., 0.},
925 {0., 0., 0.},
926 {0., 0., 0.},
927 {0., 0., 0.},
928 {0., 0., 0.},
929 {0., 0., 0.}}},
930 {{{98.82, 11.57, 134.09},
931 {75.99, -8.35, 119.06},
932 {67.08, 13.90, 118.80},
933 {82.63, 19.39, 103.15},
934 {91.52, -1.51, 102.12},
935 {103.72, -0.87, 152.77},
936 {93.78, 22.65, 152.93},
937 {110.66, 29.90, 134.51},
938 {120.49, 5.81, 134.70}}},
939 {{{-11.57, 98.82, 134.09},
940 {8.35, 75.99, 119.06},
941 {-13.90, 67.08, 118.80},
942 {-19.39, 82.63, 103.15},
943 {1.51, 91.52, 102.12},
944 {0.87, 103.72, 152.77},
945 {-22.65, 93.78, 152.93},
946 {-29.90, 110.66, 134.51},
947 {-5.81, 120.49, 134.70}}},
948 {{{-98.82, -11.57, 134.09},
949 {-75.99, 8.35, 119.06},
950 {-67.08, -13.90, 118.80},
951 {-82.63, -19.39, 103.15},
952 {-91.52, 1.51, 102.12},
953 {-103.72, 0.87, 152.77},
954 {-93.78, -22.65, 152.93},
955 {-110.66, -29.90, 134.51},
956 {-120.49, -5.81, 134.70}}},
957 {{{11.57, -98.82, 134.09},
958 {-8.35, -75.99, 119.06},
959 {13.90, -67.08, 118.80},
960 {19.39, -82.63, 103.15},
961 {-1.51, -91.52, 102.12},
962 {-0.87, -103.72, 152.77},
963 {22.65, -93.78, 152.93},
964 {29.90, -110.66, 134.51},
965 {5.81, -120.49, 134.70}}},
966 {{{160.51, 37.12, 27.13},
967 {135.64, 16.35, 36.80},
968 {126.48, 38.50, 36.42},
969 {127.36, 37.91, 13.71},
970 {135.51, 16.71, 12.83},
971 {177.69, 29.76, 40.50},
972 {167.89, 53.35, 40.74},
973 {167.78, 53.55, 14.73},
974 {177.76, 29.53, 14.96}}},
975 {{{87.25, 139.75, 27.13},
976 {84.35, 107.47, 36.80},
977 {62.21, 116.66, 36.42},
978 {63.25, 116.86, 13.71},
979 {84.01, 107.64, 12.83},
980 {104.60, 146.69, 40.50},
981 {80.99, 156.44, 40.74},
982 {80.77, 156.50, 14.73},
983 {104.81, 146.58, 14.96}}},
984 {{{-37.12, 160.51, 27.13},
985 {-16.35, 135.64, 36.80},
986 {-38.50, 126.48, 36.42},
987 {-37.91, 127.36, 13.71},
988 {-16.71, 135.51, 12.83},
989 {-29.76, 177.69, 40.50},
990 {-53.35, 167.89, 40.74},
991 {-53.55, 167.78, 14.73},
992 {-29.53, 177.76, 14.96}}},
993 {{{-139.75, 87.25, 27.13},
994 {-107.47, 84.35, 36.80},
995 {-116.66, 62.21, 36.42},
996 {-116.86, 63.25, 13.71},
997 {-107.64, 84.01, 12.83},
998 {-146.69, 104.60, 40.50},
999 {-156.44, 80.99, 40.74},
1000 {-156.50, 80.77, 14.73},
1001 {-146.58, 104.81, 14.96}}},
1002 {{{-160.51, -37.12, 27.13},
1003 {-135.64, -16.35, 36.80},
1004 {-126.48, -38.50, 36.42},
1005 {-127.36, -37.91, 13.71},
1006 {-135.51, -16.71, 12.83},
1007 {-177.69, -29.76, 40.50},
1008 {-167.89, -53.35, 40.74},
1009 {-167.78, -53.55, 14.73},
1010 {-177.76, -29.53, 14.96}}},
1011 {{{-87.25, -139.75, 27.13},
1012 {-84.35, -107.47, 36.80},
1013 {-62.21, -116.66, 36.42},
1014 {-63.25, -116.86, 13.71},
1015 {-84.01, -107.64, 12.83},
1016 {-104.60, -146.69, 40.50},
1017 {-80.99, -156.44, 40.74},
1018 {-80.77, -156.50, 14.73},
1019 {-104.81, -146.58, 14.96}}},
1020 {{{37.12, -160.51, 27.13},
1021 {16.35, -135.64, 36.80},
1022 {38.50, -126.48, 36.42},
1023 {37.91, -127.36, 13.71},
1024 {16.71, -135.51, 12.83},
1025 {29.76, -177.69, 40.50},
1026 {53.35, -167.89, 40.74},
1027 {53.55, -167.78, 14.73},
1028 {29.53, -177.76, 14.96}}},
1029 {{{139.75, -87.25, 27.13},
1030 {107.47, -84.35, 36.80},
1031 {116.66, -62.21, 36.42},
1032 {116.86, -63.25, 13.71},
1033 {107.64, -84.01, 12.83},
1034 {146.69, -104.60, 40.50},
1035 {156.44, -80.99, 40.74},
1036 {156.50, -80.77, 14.73},
1037 {146.58, -104.81, 14.96}}},
1038 {{{134.26, 26.25, -95.72},
1039 {124.08, 11.56, -67.01},
1040 {114.67, 33.61, -67.30},
1041 {100.55, 26.81, -83.76},
1042 {108.28, 5.43, -83.98},
1043 {156.64, 21.05, -95.49},
1044 {147.01, 44.70, -95.31},
1045 {129.91, 37.87, -113.68},
1046 {140.03, 13.91, -113.54}}},
1047 {{{-26.25, 134.26, -95.72},
1048 {-11.56, 124.08, -67.01},
1049 {-33.61, 114.67, -67.30},
1050 {-26.81, 100.55, -83.76},
1051 {-5.43, 108.28, -83.98},
1052 {-21.05, 156.64, -95.49},
1053 {-44.70, 147.01, -95.31},
1054 {-37.87, 129.91, -113.68},
1055 {-13.91, 140.03, -113.54}}},
1056 {{{-134.26, -26.25, -95.72},
1057 {-124.08, -11.56, -67.01},
1058 {-114.67, -33.61, -67.30},
1059 {-100.55, -26.81, -83.76},
1060 {-108.28, -5.43, -83.98},
1061 {-156.64, -21.05, -95.49},
1062 {-147.01, -44.70, -95.31},
1063 {-129.91, -37.87, -113.68},
1064 {-140.03, -13.91, -113.54}}},
1065 {{{26.25, -134.26, -95.72},
1066 {11.56, -124.08, -67.01},
1067 {33.61, -114.67, -67.30},
1068 {26.81, -100.55, -83.76},
1069 {5.43, -108.28, -83.98},
1070 {21.05, -156.64, -95.49},
1071 {44.70, -147.01, -95.31},
1072 {37.87, -129.91, -113.68},
1073 {13.91, -140.03, -113.54}}}}};
1074
1075std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeBluePositionBack = {{{{{0., 0., 0.},
1076 {0., 0., 0.},
1077 {0., 0., 0.},
1078 {0., 0., 0.},
1079 {0., 0., 0.},
1080 {0., 0., 0.},
1081 {0., 0., 0.},
1082 {0., 0., 0.},
1083 {0., 0., 0.}}},
1084 {{{100.92, 71.17, 158.84},
1085 {70.69, 69.11, 143.80},
1086 {86.51, 75.25, 126.87},
1087 {95.01, 54.19, 127.90},
1088 {80.13, 47.08, 143.55},
1089 {95.59, 83.43, 177.52},
1090 {112.17, 90.56, 159.45},
1091 {122.26, 66.58, 159.26},
1092 {105.20, 59.77, 177.67}}},
1093 {{{-71.17, 100.92, 158.84},
1094 {-69.11, 70.69, 143.80},
1095 {-75.25, 86.51, 126.87},
1096 {-54.19, 95.01, 127.90},
1097 {-47.08, 80.13, 143.55},
1098 {-83.43, 95.59, 177.52},
1099 {-90.56, 112.17, 159.45},
1100 {-66.58, 122.26, 159.26},
1101 {-59.77, 105.20, 177.67}}},
1102 {{{-100.92, -71.17, 158.84},
1103 {-70.69, -69.11, 143.80},
1104 {-86.51, -75.25, 126.87},
1105 {-95.01, -54.19, 127.90},
1106 {-80.13, -47.08, 143.55},
1107 {-95.59, -83.43, 177.52},
1108 {-112.17, -90.56, 159.45},
1109 {-122.26, -66.58, 159.26},
1110 {-105.20, -59.77, 177.67}}},
1111 {{{71.17, -100.92, 158.84},
1112 {69.11, -70.69, 143.80},
1113 {75.25, -86.51, 126.87},
1114 {54.19, -95.01, 127.90},
1115 {47.08, -80.13, 143.55},
1116 {83.43, -95.59, 177.52},
1117 {90.56, -112.17, 159.45},
1118 {66.58, -122.26, 159.26},
1119 {59.77, -105.20, 177.67}}},
1120 {{{172.08, 100.64, 27.13},
1121 {139.81, 97.74, 36.80},
1122 {139.97, 97.40, 12.83},
1123 {149.20, 76.64, 13.71},
1124 {149.00, 75.60, 36.42},
1125 {179.02, 117.99, 40.50},
1126 {178.91, 118.21, 14.96},
1127 {188.84, 94.16, 14.73},
1128 {188.78, 94.39, 40.74}}},
1129 {{{50.52, 192.85, 27.13},
1130 {29.74, 167.97, 36.80},
1131 {30.10, 167.85, 12.83},
1132 {51.31, 159.69, 13.71},
1133 {51.90, 158.82, 36.42},
1134 {43.16, 210.02, 40.50},
1135 {42.93, 210.09, 14.96},
1136 {66.95, 200.11, 14.73},
1137 {66.75, 200.23, 40.74}}},
1138 {{{-100.64, 172.08, 27.13},
1139 {-97.74, 139.81, 36.80},
1140 {-97.40, 139.97, 12.83},
1141 {-76.64, 149.20, 13.71},
1142 {-75.60, 149.00, 36.42},
1143 {-117.99, 179.02, 40.50},
1144 {-118.21, 178.91, 14.96},
1145 {-94.16, 188.84, 14.73},
1146 {-94.39, 188.78, 40.74}}},
1147 {{{-192.85, 50.52, 27.13},
1148 {-167.97, 29.74, 36.80},
1149 {-167.85, 30.10, 12.83},
1150 {-159.69, 51.31, 13.71},
1151 {-158.82, 51.90, 36.42},
1152 {-210.02, 43.16, 40.50},
1153 {-210.09, 42.93, 14.96},
1154 {-200.11, 66.95, 14.73},
1155 {-200.23, 66.75, 40.74}}},
1156 {{{-172.08, -100.64, 27.13},
1157 {-139.81, -97.74, 36.80},
1158 {-139.97, -97.40, 12.83},
1159 {-149.20, -76.64, 13.71},
1160 {-149.00, -75.60, 36.42},
1161 {-179.02, -117.99, 40.50},
1162 {-178.91, -118.21, 14.96},
1163 {-188.84, -94.16, 14.73},
1164 {-188.78, -94.39, 40.74}}},
1165 {{{-50.52, -192.85, 27.13},
1166 {-29.74, -167.97, 36.80},
1167 {-30.10, -167.85, 12.83},
1168 {-51.31, -159.69, 13.71},
1169 {-51.90, -158.82, 36.42},
1170 {-43.16, -210.02, 40.50},
1171 {-42.93, -210.09, 14.96},
1172 {-66.95, -200.11, 14.73},
1173 {-66.75, -200.23, 40.74}}},
1174 {{{100.64, -172.08, 27.13},
1175 {97.74, -139.81, 36.80},
1176 {97.40, -139.97, 12.83},
1177 {76.64, -149.20, 13.71},
1178 {75.60, -149.00, 36.42},
1179 {117.99, -179.02, 40.50},
1180 {118.21, -178.91, 14.96},
1181 {94.16, -188.84, 14.73},
1182 {94.39, -188.78, 40.74}}},
1183 {{{192.85, -50.52, 27.13},
1184 {167.97, -29.74, 36.80},
1185 {167.85, -30.10, 12.83},
1186 {159.69, -51.31, 13.71},
1187 {158.82, -51.90, 36.42},
1188 {210.02, -43.16, 40.50},
1189 {210.09, -42.93, 14.96},
1190 {200.11, -66.95, 14.73},
1191 {200.23, -66.75, 40.74}}},
1192 {{{136.36, 85.85, -120.47},
1193 {118.78, 89.03, -91.76},
1194 {103.27, 82.20, -108.72},
1195 {112.92, 61.61, -108.51},
1196 {127.71, 66.79, -92.04},
1197 {148.51, 105.35, -120.24},
1198 {131.72, 98.66, -138.29},
1199 {141.50, 74.56, -138.43},
1200 {158.43, 81.81, -120.06}}},
1201 {{{-85.85, 136.36, -120.47},
1202 {-89.03, 118.78, -91.76},
1203 {-82.20, 103.27, -108.72},
1204 {-61.61, 112.92, -108.51},
1205 {-66.79, 127.71, -92.04},
1206 {-105.35, 148.51, -120.24},
1207 {-98.66, 131.72, -138.29},
1208 {-74.56, 141.50, -138.43},
1209 {-81.81, 158.43, -120.06}}},
1210 {{{-136.36, -85.85, -120.47},
1211 {-118.78, -89.03, -91.76},
1212 {-103.27, -82.20, -108.72},
1213 {-112.92, -61.61, -108.51},
1214 {-127.71, -66.79, -92.04},
1215 {-148.51, -105.35, -120.24},
1216 {-131.72, -98.66, -138.29},
1217 {-141.50, -74.56, -138.43},
1218 {-158.43, -81.81, -120.06}}},
1219 {{{85.85, -136.36, -120.47},
1220 {89.03, -118.78, -91.76},
1221 {82.20, -103.27, -108.72},
1222 {61.61, -112.92, -108.51},
1223 {66.79, -127.71, -92.04},
1224 {105.35, -148.51, -120.24},
1225 {98.66, -131.72, -138.29},
1226 {74.56, -141.50, -138.43},
1227 {81.81, -158.43, -120.06}}}}};
1228
1229// Assuming this is the 1
1230std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeGreenPositionBack = {{{{{0., 0., 0.},
1231 {0., 0., 0.},
1232 {0., 0., 0.},
1233 {0., 0., 0.},
1234 {0., 0., 0.},
1235 {0., 0., 0.},
1236 {0., 0., 0.},
1237 {0., 0., 0.},
1238 {0., 0., 0.}}},
1239 {{{136.36, 85.85, 120.47},
1240 {118.78, 89.03, 91.76},
1241 {127.71, 66.79, 92.04},
1242 {112.92, 61.61, 108.51},
1243 {103.27, 82.20, 108.72},
1244 {148.51, 105.35, 120.24},
1245 {158.43, 81.81, 120.06},
1246 {141.50, 74.56, 138.43},
1247 {131.72, 98.66, 138.29}}},
1248 {{{-85.85, 136.36, 120.47},
1249 {-89.03, 118.78, 91.76},
1250 {-66.79, 127.71, 92.04},
1251 {-61.61, 112.92, 108.51},
1252 {-82.20, 103.27, 108.72},
1253 {-105.35, 148.51, 120.24},
1254 {-81.81, 158.43, 120.06},
1255 {-74.56, 141.50, 138.43},
1256 {-98.66, 131.72, 138.29}}},
1257 {{{-136.36, -85.85, 120.47},
1258 {-118.78, -89.03, 91.76},
1259 {-127.71, -66.79, 92.04},
1260 {-112.92, -61.61, 108.51},
1261 {-103.27, -82.20, 108.72},
1262 {-148.51, -105.35, 120.24},
1263 {-158.43, -81.81, 120.06},
1264 {-141.50, -74.56, 138.43},
1265 {-131.72, -98.66, 138.29}}},
1266 {{{85.85, -136.36, 120.47},
1267 {89.03, -118.78, 91.76},
1268 {66.79, -127.71, 92.04},
1269 {61.61, -112.92, 108.51},
1270 {82.20, -103.27, 108.72},
1271 {105.35, -148.51, 120.24},
1272 {81.81, -158.43, 120.06},
1273 {74.56, -141.50, 138.43},
1274 {98.66, -131.72, 138.29}}},
1275 {{{172.08, 100.64, -27.13},
1276 {139.81, 97.74, -36.80},
1277 {149.00, 75.60, -36.42},
1278 {149.20, 76.64, -13.71},
1279 {139.97, 97.40, -12.83},
1280 {179.02, 117.99, -40.50},
1281 {188.78, 94.39, -40.74},
1282 {188.84, 94.16, -14.73},
1283 {178.91, 118.21, -14.96}}},
1284 {{{50.52, 192.85, -27.13},
1285 {29.74, 167.97, -36.80},
1286 {51.90, 158.82, -36.42},
1287 {51.31, 159.69, -13.71},
1288 {30.10, 167.85, -12.83},
1289 {43.16, 210.02, -40.50},
1290 {66.75, 200.23, -40.74},
1291 {66.95, 200.11, -14.73},
1292 {42.93, 210.09, -14.96}}},
1293 {{{-100.64, 172.08, -27.13},
1294 {-97.74, 139.81, -36.80},
1295 {-75.60, 149.00, -36.42},
1296 {-76.64, 149.20, -13.71},
1297 {-97.40, 139.97, -12.83},
1298 {-117.99, 179.02, -40.50},
1299 {-94.39, 188.78, -40.74},
1300 {-94.16, 188.84, -14.73},
1301 {-118.21, 178.91, -14.96}}},
1302 {{{-192.85, 50.52, -27.13},
1303 {-167.97, 29.74, -36.80},
1304 {-158.82, 51.90, -36.42},
1305 {-159.69, 51.31, -13.71},
1306 {-167.85, 30.10, -12.83},
1307 {-210.02, 43.16, -40.50},
1308 {-200.23, 66.75, -40.74},
1309 {-200.11, 66.95, -14.73},
1310 {-210.09, 42.93, -14.96}}},
1311 {{{-172.08, -100.64, -27.13},
1312 {-139.81, -97.74, -36.80},
1313 {-149.00, -75.60, -36.42},
1314 {-149.20, -76.64, -13.71},
1315 {-139.97, -97.40, -12.83},
1316 {-179.02, -117.99, -40.50},
1317 {-188.78, -94.39, -40.74},
1318 {-188.84, -94.16, -14.73},
1319 {-178.91, -118.21, -14.96}}},
1320 {{{-50.52, -192.85, -27.13},
1321 {-29.74, -167.97, -36.80},
1322 {-51.90, -158.82, -36.42},
1323 {-51.31, -159.69, -13.71},
1324 {-30.10, -167.85, -12.83},
1325 {-43.16, -210.02, -40.50},
1326 {-66.75, -200.23, -40.74},
1327 {-66.95, -200.11, -14.73},
1328 {-42.93, -210.09, -14.96}}},
1329 {{{100.64, -172.08, -27.13},
1330 {97.74, -139.81, -36.80},
1331 {75.60, -149.00, -36.42},
1332 {76.64, -149.20, -13.71},
1333 {97.40, -139.97, -12.83},
1334 {117.99, -179.02, -40.50},
1335 {94.39, -188.78, -40.74},
1336 {94.16, -188.84, -14.73},
1337 {118.21, -178.91, -14.96}}},
1338 {{{192.85, -50.52, -27.13},
1339 {167.97, -29.74, -36.80},
1340 {158.82, -51.90, -36.42},
1341 {159.69, -51.31, -13.71},
1342 {167.85, -30.10, -12.83},
1343 {210.02, -43.16, -40.50},
1344 {200.23, -66.75, -40.74},
1345 {200.11, -66.95, -14.73},
1346 {210.09, -42.93, -14.96}}},
1347 {{{100.92, 71.17, -158.84},
1348 {70.69, 69.11, -143.80},
1349 {80.13, 47.08, -143.55},
1350 {95.01, 54.19, -127.90},
1351 {86.51, 75.25, -126.87},
1352 {95.59, 83.43, -177.52},
1353 {105.20, 59.77, -177.67},
1354 {122.26, 66.58, -159.26},
1355 {112.17, 90.56, -159.45}}},
1356 {{{-71.17, 100.92, -158.84},
1357 {-69.11, 70.69, -143.80},
1358 {-47.08, 80.13, -143.55},
1359 {-54.19, 95.01, -127.90},
1360 {-75.25, 86.51, -126.87},
1361 {-83.43, 95.59, -177.52},
1362 {-59.77, 105.20, -177.67},
1363 {-66.58, 122.26, -159.26},
1364 {-90.56, 112.17, -159.45}}},
1365 {{{-100.92, -71.17, -158.84},
1366 {-70.69, -69.11, -143.80},
1367 {-80.13, -47.08, -143.55},
1368 {-95.01, -54.19, -127.90},
1369 {-86.51, -75.25, -126.87},
1370 {-95.59, -83.43, -177.52},
1371 {-105.20, -59.77, -177.67},
1372 {-122.26, -66.58, -159.26},
1373 {-112.17, -90.56, -159.45}}},
1374 {{{71.17, -100.92, -158.84},
1375 {69.11, -70.69, -143.80},
1376 {47.08, -80.13, -143.55},
1377 {54.19, -95.01, -127.90},
1378 {75.25, -86.51, -126.87},
1379 {83.43, -95.59, -177.52},
1380 {59.77, -105.20, -177.67},
1381 {66.58, -122.26, -159.26},
1382 {90.56, -112.17, -159.45}}}}};
1383
1384// Assuming this is the 2
1385std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeRedPositionBack = {{{{{0., 0., 0.},
1386 {0., 0., 0.},
1387 {0., 0., 0.},
1388 {0., 0., 0.},
1389 {0., 0., 0.},
1390 {0., 0., 0.},
1391 {0., 0., 0.},
1392 {0., 0., 0.},
1393 {0., 0., 0.}}},
1394 {{{157.13, 35.72, 120.47},
1395 {146.94, 21.03, 91.76},
1396 {131.15, 14.90, 108.72},
1397 {123.41, 36.28, 108.51},
1398 {137.53, 43.08, 92.04},
1399 {179.50, 30.52, 120.24},
1400 {162.90, 23.38, 138.29},
1401 {152.78, 47.34, 138.43},
1402 {169.87, 54.17, 120.06}}},
1403 {{{-35.72, 157.13, 120.47},
1404 {-21.03, 146.94, 91.76},
1405 {-14.90, 131.15, 108.72},
1406 {-36.28, 123.41, 108.51},
1407 {-43.08, 137.53, 92.04},
1408 {-30.52, 179.50, 120.24},
1409 {-23.38, 162.90, 138.29},
1410 {-47.34, 152.78, 138.43},
1411 {-54.17, 169.87, 120.06}}},
1412 {{{-157.13, -35.72, 120.47},
1413 {-146.94, -21.03, 91.76},
1414 {-131.15, -14.90, 108.72},
1415 {-123.41, -36.28, 108.51},
1416 {-137.53, -43.08, 92.04},
1417 {-179.50, -30.52, 120.24},
1418 {-162.90, -23.38, 138.29},
1419 {-152.78, -47.34, 138.43},
1420 {-169.87, -54.17, 120.06}}},
1421 {{{35.72, -157.13, 120.47},
1422 {21.03, -146.94, 91.76},
1423 {14.90, -131.15, 108.72},
1424 {36.28, -123.41, 108.51},
1425 {43.08, -137.53, 92.04},
1426 {30.52, -179.50, 120.24},
1427 {23.38, -162.90, 138.29},
1428 {47.34, -152.78, 138.43},
1429 {54.17, -169.87, 120.06}}},
1430 {{{192.85, 50.52, -27.13},
1431 {167.97, 29.74, -36.80},
1432 {167.85, 30.10, -12.83},
1433 {159.69, 51.31, -13.71},
1434 {158.82, 51.90, -36.42},
1435 {210.02, 43.16, -40.50},
1436 {210.09, 42.93, -14.96},
1437 {200.11, 66.95, -14.73},
1438 {200.23, 66.75, -40.74}}},
1439 {{{100.64, 172.08, -27.13},
1440 {97.74, 139.81, -36.80},
1441 {97.40, 139.97, -12.83},
1442 {76.64, 149.20, -13.71},
1443 {75.60, 149.00, -36.42},
1444 {117.99, 179.02, -40.50},
1445 {118.21, 178.91, -14.96},
1446 {94.16, 188.84, -14.73},
1447 {94.39, 188.78, -40.74}}},
1448 {{{-50.52, 192.85, -27.13},
1449 {-29.74, 167.97, -36.80},
1450 {-30.10, 167.85, -12.83},
1451 {-51.31, 159.69, -13.71},
1452 {-51.90, 158.82, -36.42},
1453 {-43.16, 210.02, -40.50},
1454 {-42.93, 210.09, -14.96},
1455 {-66.95, 200.11, -14.73},
1456 {-66.75, 200.23, -40.74}}},
1457 {{{-172.08, 100.64, -27.13},
1458 {-139.81, 97.74, -36.80},
1459 {-139.97, 97.40, -12.83},
1460 {-149.20, 76.64, -13.71},
1461 {-149.00, 75.60, -36.42},
1462 {-179.02, 117.99, -40.50},
1463 {-178.91, 118.21, -14.96},
1464 {-188.84, 94.16, -14.73},
1465 {-188.78, 94.39, -40.74}}},
1466 {{{-192.85, -50.52, -27.13},
1467 {-167.97, -29.74, -36.80},
1468 {-167.85, -30.10, -12.83},
1469 {-159.69, -51.31, -13.71},
1470 {-158.82, -51.90, -36.42},
1471 {-210.02, -43.16, -40.50},
1472 {-210.09, -42.93, -14.96},
1473 {-200.11, -66.95, -14.73},
1474 {-200.23, -66.75, -40.74}}},
1475 {{{-100.64, -172.08, -27.13},
1476 {-97.74, -139.81, -36.80},
1477 {-97.40, -139.97, -12.83},
1478 {-76.64, -149.20, -13.71},
1479 {-75.60, -149.00, -36.42},
1480 {-117.99, -179.02, -40.50},
1481 {-118.21, -178.91, -14.96},
1482 {-94.16, -188.84, -14.73},
1483 {-94.39, -188.78, -40.74}}},
1484 {{{50.52, -192.85, -27.13},
1485 {29.74, -167.97, -36.80},
1486 {30.10, -167.85, -12.83},
1487 {51.31, -159.69, -13.71},
1488 {51.90, -158.82, -36.42},
1489 {43.16, -210.02, -40.50},
1490 {42.93, -210.09, -14.96},
1491 {66.95, -200.11, -14.73},
1492 {66.75, -200.23, -40.74}}},
1493 {{{172.08, -100.64, -27.13},
1494 {139.81, -97.74, -36.80},
1495 {139.97, -97.40, -12.83},
1496 {149.20, -76.64, -13.71},
1497 {149.00, -75.60, -36.42},
1498 {179.02, -117.99, -40.50},
1499 {178.91, -118.21, -14.96},
1500 {188.84, -94.16, -14.73},
1501 {188.78, -94.39, -40.74}}},
1502 {{{121.68, 21.04, -158.84},
1503 {98.86, 1.12, -143.80},
1504 {114.39, 7.96, -126.87},
1505 {105.50, 28.86, -127.90},
1506 {89.95, 23.37, -143.55},
1507 {126.59, 8.60, -177.52},
1508 {143.35, 15.28, -159.45},
1509 {133.53, 39.37, -159.26},
1510 {116.65, 32.12, -177.67}}},
1511 {{{-21.04, 121.68, -158.84},
1512 {-1.12, 98.86, -143.80},
1513 {-7.96, 114.39, -126.87},
1514 {-28.86, 105.50, -127.90},
1515 {-23.37, 89.95, -143.55},
1516 {-8.60, 126.59, -177.52},
1517 {-15.28, 143.35, -159.45},
1518 {-39.37, 133.53, -159.26},
1519 {-32.12, 116.65, -177.67}}},
1520 {{{-121.68, -21.04, -158.84},
1521 {-98.86, -1.12, -143.80},
1522 {-114.39, -7.96, -126.87},
1523 {-105.50, -28.86, -127.90},
1524 {-89.95, -23.37, -143.55},
1525 {-126.59, -8.60, -177.52},
1526 {-143.35, -15.28, -159.45},
1527 {-133.53, -39.37, -159.26},
1528 {-116.65, -32.12, -177.67}}},
1529 {{{21.04, -121.68, -158.84},
1530 {1.12, -98.86, -143.80},
1531 {7.96, -114.39, -126.87},
1532 {28.86, -105.50, -127.90},
1533 {23.37, -89.95, -143.55},
1534 {8.60, -126.59, -177.52},
1535 {15.28, -143.35, -159.45},
1536 {39.37, -133.53, -159.26},
1537 {32.12, -116.65, -177.67}}}}};
1538
1539// Assuming this is the 3
1540std::array<std::array<std::array<double, 3>, 9>, 17> TTigress::fGeWhitePositionBack = {{{{{0., 0., 0.},
1541 {0., 0., 0.},
1542 {0., 0., 0.},
1543 {0., 0., 0.},
1544 {0., 0., 0.},
1545 {0., 0., 0.},
1546 {0., 0., 0.},
1547 {0., 0., 0.},
1548 {0., 0., 0.}}},
1549 {{{121.68, 21.04, 158.84},
1550 {98.86, 1.12, 143.80},
1551 {89.95, 23.37, 143.55},
1552 {105.50, 28.86, 127.90},
1553 {114.39, 7.96, 126.87},
1554 {126.59, 8.60, 177.52},
1555 {116.65, 32.12, 177.67},
1556 {133.53, 39.37, 159.26},
1557 {143.35, 15.28, 159.45}}},
1558 {{{-21.04, 121.68, 158.84},
1559 {-1.12, 98.86, 143.80},
1560 {-23.37, 89.95, 143.55},
1561 {-28.86, 105.50, 127.90},
1562 {-7.96, 114.39, 126.87},
1563 {-8.60, 126.59, 177.52},
1564 {-32.12, 116.65, 177.67},
1565 {-39.37, 133.53, 159.26},
1566 {-15.28, 143.35, 159.45}}},
1567 {{{-121.68, -21.04, 158.84},
1568 {-98.86, -1.12, 143.80},
1569 {-89.95, -23.37, 143.55},
1570 {-105.50, -28.86, 127.90},
1571 {-114.39, -7.96, 126.87},
1572 {-126.59, -8.60, 177.52},
1573 {-116.65, -32.12, 177.67},
1574 {-133.53, -39.37, 159.26},
1575 {-143.35, -15.28, 159.45}}},
1576 {{{21.04, -121.68, 158.84},
1577 {1.12, -98.86, 143.80},
1578 {23.37, -89.95, 143.55},
1579 {28.86, -105.50, 127.90},
1580 {7.96, -114.39, 126.87},
1581 {8.60, -126.59, 177.52},
1582 {32.12, -116.65, 177.67},
1583 {39.37, -133.53, 159.26},
1584 {15.28, -143.35, 159.45}}},
1585 {{{192.85, 50.52, 27.13},
1586 {167.97, 29.74, 36.80},
1587 {158.82, 51.90, 36.42},
1588 {159.69, 51.31, 13.71},
1589 {167.85, 30.10, 12.83},
1590 {210.02, 43.16, 40.50},
1591 {200.23, 66.75, 40.74},
1592 {200.11, 66.95, 14.73},
1593 {210.09, 42.93, 14.96}}},
1594 {{{100.64, 172.08, 27.13},
1595 {97.74, 139.81, 36.80},
1596 {75.60, 149.00, 36.42},
1597 {76.64, 149.20, 13.71},
1598 {97.40, 139.97, 12.83},
1599 {117.99, 179.02, 40.50},
1600 {94.39, 188.78, 40.74},
1601 {94.16, 188.84, 14.73},
1602 {118.21, 178.91, 14.96}}},
1603 {{{-50.52, 192.85, 27.13},
1604 {-29.74, 167.97, 36.80},
1605 {-51.90, 158.82, 36.42},
1606 {-51.31, 159.69, 13.71},
1607 {-30.10, 167.85, 12.83},
1608 {-43.16, 210.02, 40.50},
1609 {-66.75, 200.23, 40.74},
1610 {-66.95, 200.11, 14.73},
1611 {-42.93, 210.09, 14.96}}},
1612 {{{-172.08, 100.64, 27.13},
1613 {-139.81, 97.74, 36.80},
1614 {-149.00, 75.60, 36.42},
1615 {-149.20, 76.64, 13.71},
1616 {-139.97, 97.40, 12.83},
1617 {-179.02, 117.99, 40.50},
1618 {-188.78, 94.39, 40.74},
1619 {-188.84, 94.16, 14.73},
1620 {-178.91, 118.21, 14.96}}},
1621 {{{-192.85, -50.52, 27.13},
1622 {-167.97, -29.74, 36.80},
1623 {-158.82, -51.90, 36.42},
1624 {-159.69, -51.31, 13.71},
1625 {-167.85, -30.10, 12.83},
1626 {-210.02, -43.16, 40.50},
1627 {-200.23, -66.75, 40.74},
1628 {-200.11, -66.95, 14.73},
1629 {-210.09, -42.93, 14.96}}},
1630 {{{-100.64, -172.08, 27.13},
1631 {-97.74, -139.81, 36.80},
1632 {-75.60, -149.00, 36.42},
1633 {-76.64, -149.20, 13.71},
1634 {-97.40, -139.97, 12.83},
1635 {-117.99, -179.02, 40.50},
1636 {-94.39, -188.78, 40.74},
1637 {-94.16, -188.84, 14.73},
1638 {-118.21, -178.91, 14.96}}},
1639 {{{50.52, -192.85, 27.13},
1640 {29.74, -167.97, 36.80},
1641 {51.90, -158.82, 36.42},
1642 {51.31, -159.69, 13.71},
1643 {30.10, -167.85, 12.83},
1644 {43.16, -210.02, 40.50},
1645 {66.75, -200.23, 40.74},
1646 {66.95, -200.11, 14.73},
1647 {42.93, -210.09, 14.96}}},
1648 {{{172.08, -100.64, 27.13},
1649 {139.81, -97.74, 36.80},
1650 {149.00, -75.60, 36.42},
1651 {149.20, -76.64, 13.71},
1652 {139.97, -97.40, 12.83},
1653 {179.02, -117.99, 40.50},
1654 {188.78, -94.39, 40.74},
1655 {188.84, -94.16, 14.73},
1656 {178.91, -118.21, 14.96}}},
1657 {{{157.13, 35.72, -120.47},
1658 {146.94, 21.03, -91.76},
1659 {137.53, 43.08, -92.04},
1660 {123.41, 36.28, -108.51},
1661 {131.15, 14.90, -108.72},
1662 {179.50, 30.52, -120.24},
1663 {169.87, 54.17, -120.06},
1664 {152.78, 47.34, -138.43},
1665 {162.90, 23.38, -138.29}}},
1666 {{{-35.72, 157.13, -120.47},
1667 {-21.03, 146.94, -91.76},
1668 {-43.08, 137.53, -92.04},
1669 {-36.28, 123.41, -108.51},
1670 {-14.90, 131.15, -108.72},
1671 {-30.52, 179.50, -120.24},
1672 {-54.17, 169.87, -120.06},
1673 {-47.34, 152.78, -138.43},
1674 {-23.38, 162.90, -138.29}}},
1675 {{{-157.13, -35.72, -120.47},
1676 {-146.94, -21.03, -91.76},
1677 {-137.53, -43.08, -92.04},
1678 {-123.41, -36.28, -108.51},
1679 {-131.15, -14.90, -108.72},
1680 {-179.50, -30.52, -120.24},
1681 {-169.87, -54.17, -120.06},
1682 {-152.78, -47.34, -138.43},
1683 {-162.90, -23.38, -138.29}}},
1684 {{{35.72, -157.13, -120.47},
1685 {21.03, -146.94, -91.76},
1686 {43.08, -137.53, -92.04},
1687 {36.28, -123.41, -108.51},
1688 {14.90, -131.15, -108.72},
1689 {30.52, -179.50, -120.24},
1690 {54.17, -169.87, -120.06},
1691 {47.34, -152.78, -138.43},
1692 {23.38, -162.90, -138.29}}}}};
1693
1694std::array<std::array<std::array<bool, 5>, 4>, 4> TTigress::fBGOSuppression = {{{{{true, true, true, true, true},
1695 {true, false, false, false, false},
1696 {false, false, false, false, false},
1697 {false, false, false, false, true}}},
1698 {{{false, false, false, false, true},
1699 {true, true, true, true, true},
1700 {true, false, false, false, false},
1701 {false, false, false, false, false}}},
1702 {{{false, false, false, false, false},
1703 {false, false, false, false, true},
1704 {true, true, true, true, true},
1705 {true, false, false, false, false}}},
1706 {{{true, false, false, false, false},
1707 {false, false, false, false, false},
1708 {false, false, false, false, true},
1709 {true, true, true, true, true}}}}};
#define RESET_COLOR
Definition Globals.h:5
#define ALERTTEXT
Definition Globals.h:35
bool DefaultSuppression(TDetectorHit *tig, TBgoHit &bgo)
Definition TTigress.cxx:60
bool DefaultAddback(TDetectorHit *one, TDetectorHit *two)
Definition TTigress.cxx:19
double AddbackWindow() const
bool IsWaveformFitting() const
int GetDetectorNumber() const
int GetCrystalNumber() const
int GetSegmentNumber() const
const TMnemonic * GetMnemonic() const
virtual double GetEnergy(Option_t *opt="") const
virtual Int_t GetCrystal() const
!
TChannel * GetChannel() const
!
virtual Int_t GetDetector() const
!
virtual Float_t GetCfd() const
!
virtual Int_t GetSegment() const
!
virtual Double_t GetTime(const ETimeFlag &correct_flag=ETimeFlag::kAll, Option_t *opt="") const
Returns a time value to the nearest nanosecond!
void SetAddress(const UInt_t &temp_address)
!
void Print(Option_t *opt="") const override
!
void Copy(TObject &) const override
!
Definition TDetector.cxx:24
virtual bool NoHits() const
Definition TDetector.h:76
virtual Short_t GetMultiplicity() const
Definition TDetector.h:73
virtual TDetectorHit * GetHit(const int &index) const
Definition TDetector.cxx:61
void Clear(Option_t *="") override
!
Definition TDetector.h:68
std::vector< TDetectorHit * > & Hits()
Definition TDetector.h:78
virtual void AddHit(TDetectorHit *hit)
Definition TDetector.h:63
static TAnalysisOptions * AnalysisOptions()
virtual EMnemonic OutputSensor() const
Definition TMnemonic.h:65
virtual EMnemonic SubSystem() const
Definition TMnemonic.h:61
static TSortingDiagnostics * Get(bool verbose=false)
Definition TSingleton.h:33
void RemovedHits(TClass *detClass, int64_t removed, int64_t total)
TVector3 GetLastPosition(Double_t dist=0.) const
void SumHit(TTigressHit *)
!
int GetFirstSeg() const
bool CoreSet() const
Definition TTigressHit.h:82
void AddSegment(const TDetectorHit &seg)
!
Definition TTigressHit.h:56
void CopyFragment(const TFragment &frag)
Int_t GetAddbackMultiplicity()
Definition TTigress.cxx:132
std::vector< TBgoHit > fBgos
Definition TTigress.h:132
void Copy(TObject &) const override
!
Definition TTigress.cxx:88
static bool GetVectorsBuilt()
!
Definition TTigress.h:171
std::vector< TDetectorHit * > fAddbackHits
! Used to create addback hits on the fly
Definition TTigress.h:130
static std::function< bool(TDetectorHit *, TDetectorHit *)> fAddbackCriterion
Definition TTigress.h:100
void ResetAddback()
!
Definition TTigress.cxx:299
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeBluePositionBack
! detector segment XYZ
Definition TTigress.h:1075
UShort_t GetNAddbackFrags(size_t idx) const
Definition TTigress.cxx:311
static bool GetArrayBackPos()
!
Definition TTigress.h:170
TTigressHit * GetTigressHit(const int &i) const
Definition TTigress.h:57
TTigressHit * GetAddbackHit(const int &)
Definition TTigress.cxx:176
static std::array< TVector3, 17 > fCloverRadial
! clover direction vectors
Definition TTigress.h:438
static std::array< std::array< TVector3, 2 >, 17 > fCloverCross
! clover perpendicular vectors, for smearing
Definition TTigress.h:113
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeBluePosition
! detector segment XYZ
Definition TTigress.h:456
static bool GetForceCrystal()
!
Definition TTigress.h:169
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeWhitePositionBack
!
Definition TTigress.h:1540
static double fTargetOffset
!
Definition TTigress.h:106
static void SetGlobalBit(ETigressGlobalBits bit, Bool_t set=true)
Definition TTigress.h:127
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
Definition TTigress.cxx:223
void BuildHits() override
!
Definition TTigress.cxx:188
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeGreenPosition
!
Definition TTigress.h:611
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeRedPositionBack
!
Definition TTigress.h:1385
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeRedPosition
!
Definition TTigress.h:766
static TVector3 GetPosition(int DetNbr, int CryNbr, int SegNbr, double dist=0., bool smear=false)
!
Definition TTigress.cxx:326
static void BuildVectors()
!
Definition TTigress.cxx:352
static std::function< bool(TDetectorHit *, TBgoHit &)> fSuppressionCriterion
Definition TTigress.h:101
static Bool_t TestGlobalBit(ETigressGlobalBits bit)
Definition TTigress.h:128
TTigress & operator=(const TTigress &)
!
Definition TTigress.cxx:126
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeGreenPositionBack
!
Definition TTigress.h:1230
void Clear(Option_t *opt="") override
!
Definition TTigress.cxx:100
TTransientBits< UShort_t > fTigressBits
Definition TTigress.h:104
ETigressGlobalBits
Definition TTigress.h:38
void Print(Option_t *opt="") const override
!
Definition TTigress.cxx:111
static TTransientBits< UShort_t > fGlobalTigressBits
!
Definition TTigress.h:103
static std::array< std::array< std::array< double, 3 >, 9 >, 17 > fGeWhitePosition
!
Definition TTigress.h:921
static std::array< std::array< std::array< std::array< TVector3, 9 >, 4 >, 17 >, 2 > fPositionVectors
!
Definition TTigress.h:110
static double fRadialOffset
!
Definition TTigress.h:107
std::vector< UShort_t > fAddbackFrags
! Number of crystals involved in creating in the addback hit
Definition TTigress.h:131
static std::array< std::array< std::array< bool, 5 >, 4 >, 4 > fBGOSuppression
!
Definition TTigress.h:1694
void SetBit(T bit, Bool_t flag)
Bool_t TestBit(T bit) const
std::underlying_type< TTigress::ETigressGlobalBits >::type operator|(TTigress::ETigressGlobalBits lhs, TTigress::ETigressGlobalBits rhs)
Definition TTigress.cxx:72