108 cout <<
" PndSttIsochroneDraw::Exec " << endl;
119 Double_t eventTime = FairRootManager::Instance()->GetEventTime();
121 if (FairRunAna::Instance()->IsTimeStamp()) {
122 std::cout <<
"Inside TimeStamp" << std::endl;
126 cout <<
"EventTime: " << eventTime <<
" TimeWindow: " <<
fStartTime
129 fSttHitArray = FairRootManager::Instance()->GetData(GetName(),
136 std::cout <<
"SttHitArray: " <<
fSttHitArray->GetEntriesFast()
141 cout <<
"PndSttIsochroneDraw::Exec " <<
i << endl;
144 std::cout <<
"STTHits: " << myHit->GetX() <<
" " << myHit->GetY()
145 <<
" " << myHit->GetZ() << std::endl;
147 std::cout <<
"-E- PndSttIsochroneDraw Hit does not exist! " <<
i
159 if (
nullptr == myTube) {
160 std::cout <<
"-E- PndSttIsochroneDraw Tube does not exist! "
172 Double_t driftTime = myHit->GetTimeStamp() - eventTime;
173 FairMultiLinkedData_Interface* linkData = (FairMultiLinkedData_Interface*)myHit;
177 std::cout <<
"StartLink: " << *linkData << std::endl;
178 FairMultiLinkedData result = linkData->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"STTPoint"));
181 std::cout <<
"Links: " << result << std::endl;
182 if (result.GetNLinks() == 1 && result.GetLink(0).GetType() == FairRootManager::Instance()->GetBranchId(
"STTPoint")){
184 FairLink evtHeaderLink(-1, result.GetLink(0).GetEntry(),
"EventHeader.", -1);
185 FairEventHeader* evtHeader = (FairEventHeader*)FairRootManager::Instance()->GetCloneOfLinkData(evtHeaderLink);
187 std::cout <<
"MCTime: " << evtHeader->GetEventTime() << std::endl;
192 std::cout <<
"-I- PndSttIsochroneDraw Pulse: " << myHit->
GetPulse() <<
" TimeStamp: " << myHit->GetTimeStamp() <<
" EventTime " << eventTime <<
" DriftTime: " << driftTime << std::endl;
193 std::cout <<
"-I- PndSttIsochroneDraw Radius: " << myHit->
GetIsochrone() <<
" RecoRadius: " << straw.
TimnsToDiscm(driftTime) << std::endl;
198 std::cout <<
"-I- PndSttIsochrone Drift time <= 0: " << driftTime << std::endl;
202 std::cout <<
"-I- PndSttIsochrone Isochrone with " << radius <<
" larger than tube radius of " << myTube->
GetRadIn() << std::endl;
212 TEveGeoShape* myEveShape;
213 myEveShape =
new TEveGeoShape(
"SttTube");
215 myEveShape->SetShape(
216 new TGeoTube(radius - radiusError, radius + radiusError,
220 myEveShape->SetMainColor(kYellow);
221 myEveShape->SetMainTransparency(80);
223 myEveShape->SetMainColor(kCyan);
227 rotArray[0] = myRotMat(0, 0);
228 rotArray[1] = myRotMat(0, 1);
229 rotArray[2] = myRotMat(0, 2);
230 rotArray[3] = myRotMat(1, 0);
231 rotArray[4] = myRotMat(1, 1);
232 rotArray[5] = myRotMat(1, 2);
233 rotArray[6] = myRotMat(2, 0);
234 rotArray[7] = myRotMat(2, 1);
235 rotArray[8] = myRotMat(2, 2);
238 std::cout <<
"RotMat NElements: "
239 << myRotMat.GetNoElements() << std::endl;
241 std::cout << myRotMat(0, 0) <<
" ";
242 std::cout << myRotMat(0, 1) <<
" ";
243 std::cout << myRotMat(0, 2) << std::endl;
244 std::cout << myRotMat(1, 0) <<
" ";
245 std::cout << myRotMat(1, 1) <<
" ";
246 std::cout << myRotMat(1, 2) << std::endl;
247 std::cout << myRotMat(2, 0) <<
" ";
248 std::cout << myRotMat(2, 1) <<
" ";
249 std::cout << myRotMat(2, 2) << std::endl;
252 TGeoHMatrix geoTrans;
253 geoTrans.SetRotation(rotArray);
259 trans[2] += tubeLengthHalf + 0.35;
260 geoTrans.SetTranslation(trans);
263 std::cout <<
"Translation: " << trans[0] <<
"/" << trans[1] <<
"/" << trans[2] << std::endl;
266 myEveShape->SetTransMatrix(geoTrans);
276 gEve->Redraw3D(kFALSE);
Double_t GetTrueDistance()
PndGeoSttPar * fSttParameters
TEveBoxSet * fListOfParallelIsochrones
Double_t GetPulse() const
PndSttTube * GetTube(int tubeId)
static PndSttTubeMap * Instance()
BinaryFunctor * fStopFunctor
BinaryFunctor * fStartFunctor
Double_t GetIsochrone() const
TEveBoxSet * fListOfTiltedIsochrones
Double_t fTimeWindowMinus
FairEventManager * fEventManager
Double_t GetIsochroneError() const
Double_t TimnsToDiscm(Double_t time)
TClonesArray * fSttHitArray
TClonesArray * fSttTubeArray
TEveBoxSet * fListOfIsochrones
TMatrixT< Double_t > GetRotationMatrix()
TVector3 GetWireDirection()