15#include <FairRootManager.h>
17#include <FairTrackParam.h>
21#include <TClonesArray.h>
22#include <TEveManager.h>
23#include <TEvePathMark.h>
25#include <TEveTrackPropagator.h>
26#include <TEveVector.h>
27#include <TGenericClassInfo.h>
38 LOG(debug) <<
"CbmTimesliceRecoTracks::Init()";
39 FairRootManager* fManager = FairRootManager::Instance();
41 fCbmEvents =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"CbmEvent"));
42 fGlobalTracks =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"GlobalTrack"));
43 fStsTracks =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"StsTrack"));
44 fMvdHits =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"MvdHit"));
45 fStsHits =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"StsHit"));
46 fRichRings =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"RichRing"));
47 fRichHits =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"RichHit"));
48 fMuchPixelHits =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"MuchPixelHit"));
49 fMuchTracks =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"MuchTrack"));
50 fTrdHits =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"TrdHit"));
51 fTrdTracks =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"TrdTrack"));
52 fTofHits =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"TofHit"));
53 fTofTracks =
dynamic_cast<TClonesArray*
>(fManager->GetObject(
"TofTrack"));
56 LOG(warn) <<
"TofTracks not found";
60 LOG(fatal) <<
"CbmTimesliceRecoTracks::Init() => CbmEvents branch not found! Task will be deactivated";
64 LOG(debug1) <<
"CbmTimesliceRecoTracks::Init() get track list" <<
fStsTracks;
65 LOG(debug1) <<
"CbmTimesliceRecoTracks::Init() create propagator";
67 LOG(debug1) <<
"CbmTimesliceRecoTracks::Init() got instance of CbmTimesliceManager ";
69 if (IsActive()) {
return kSUCCESS; }
77 eveTrack->SetPoint(n, hit->
GetX(), hit->
GetY(), hit->
GetZ());
83 if (pMom) path.fP = *pMom;
85 eveTrack->AddPathMark(path);
93 for (Int_t i = 0; i < nofHits; ++i) {
97 LOG(debug4) <<
"HandleTrack: hit " << i <<
", type " << hitType <<
", ind " << hitIndex;
107 default: LOG(warn) <<
"Pixel type " << hitType <<
" not supported.";
122 TEveVector mom = TEveVector(mom3.X(), mom3.Y(), mom3.Z());
135 TEveVector mom = TEveVector(mom3.X(), mom3.Y(), mom3.Z());
152 LOG(debug3) <<
"CbmTimesliceRecoTracks::GotoEvent " << uEventIdx;
154 if (
fCbmEvents->GetEntriesFast() <=
static_cast<Int_t
>(uEventIdx)) {
155 LOG(fatal) <<
"CbmTimesliceRecoTracks::GotoEvent() => Failure, tried to load event " << uEventIdx <<
" while only "
156 <<
fCbmEvents->GetEntriesFast() <<
" events available in this TS!!!";
168 LOG(debug3) <<
"CbmTimesliceRecoTracks for nofGlobalTracks=" << nofGlobalTracks;
170 for (Int_t iGloTrk = 0; iGloTrk < nofGlobalTracks; ++iGloTrk) {
171 LOG(debug3) <<
"CbmTimesliceRecoTracks::GotoEvent " << iGloTrk;
180 LOG(debug4) <<
"GloTrk " << iGloTrk <<
" trkId " << trkId <<
" stsId " << stsId <<
" trdId " << trdId <<
" tofId "
181 << tofId <<
", " << tofHitId;
198 if (
nullptr != stsTrack) {
204 TEveTrack* eveTrack =
new TEveTrack(&P, pdg,
fTrPr);
209 eveTrack->SetLineColor(kRed);
211 if (
nullptr != stsTrack) {
212 LOG(debug3) <<
"HandleStsTrack " << stsId;
216 LOG(debug3) <<
"No Sts track";
227 else if (-1 < muchId) {
231 LOG(debug3) <<
"HandleTrdTrack " << trdId;
234 LOG(error) << GetName() <<
": No TrdTrack array, return";
238 LOG(debug3) <<
"HandleTrdTrack " << trdId <<
", " << recoTrack;
239 if (
nullptr != recoTrack)
HandleTrack(eveTrack, n, recoTrack);
245 LOG(error) << GetName() <<
": No TofTrack array, return";
249 LOG(debug3) <<
"HandleTofTrack " << tofId <<
", " << recoTrack;
250 if (
nullptr != recoTrack)
HandleTrack(eveTrack, n, recoTrack);
253 else if (-1 < tofHitId)
257 eveTrack->SetRnrPoints(kTRUE);
260 LOG(debug3) <<
"track added " << eveTrack->GetName();
263 gEve->Redraw3D(kFALSE);
268 for (Int_t i = 0; i <
fEveTrList->GetEntriesFast(); i++) {
269 TEveTrackList* ele = (TEveTrackList*)
fEveTrList->At(i);
270 LOG(debug3) << GetName() <<
": remove elements from " << ele->GetName();
279 snprintf(name_buf, 128,
"reco_%s", P->GetName());
281 for (Int_t i = 0; i <
fEveTrList->GetEntriesFast(); i++) {
282 TEveTrackList* TrListIn = (TEveTrackList*)
fEveTrList->At(i);
283 if (strcmp(TrListIn->GetName(), name_buf) == 0) {
289 fTrPr =
new TEveTrackPropagator();
ClassImp(CbmConverterManager)
Data class for STS tracks.
Class characterising one event by a collection of links (indices) to data objects,...
size_t GetNofData() const
int32_t GetStsTrackIndex() const
int32_t GetRichRingIndex() const
int32_t GetTofTrackIndex() const
int32_t GetTofHitIndex() const
int32_t GetMuchTrackIndex() const
int32_t GetTrdTrackIndex() const
uint32_t GetHit(int32_t i) const
Data class with information on a STS local track.
int32_t GetNofMvdHits() const
int32_t GetMvdHitIndex(int32_t iHit) const
int32_t GetStsHitIndex(int32_t iHit) const
int32_t GetNofStsHits() const
virtual Int_t Color(Int_t pdg)
static CbmTimesliceManager * Instance()
Interface class to add Cbm Hits drawing (derived from PixelHit) to CbmTimesliceManager....
TEveTrackList * GetTrGroup(TParticle *P)
TClonesArray * fTrdTracks
TClonesArray * fMuchTracks
void GotoEvent(uint32_t uEventIdx)
Load tracks from selected event in timeslice. RESERVED FOR GUI CALLS!
virtual void Exec(Option_t *option)
TClonesArray * fStsTracks
TClonesArray * fCbmEvents
void HandleTrack(TEveTrack *eveTrack, Int_t &n, const CbmTrack *recoTrack)
void HandlePixelHit(TEveTrack *eveTrack, Int_t &n, const CbmPixelHit *hit, TEveVector *pMom)
TClonesArray * fTofTracks
virtual InitStatus Init()
TEveTrackPropagator * fTrPr
TClonesArray * fRichRings
TClonesArray * fGlobalTracks
void HandleStsTrack(TEveTrack *eveTrack, Int_t &n, const CbmStsTrack *stsTrack)
TClonesArray * fMuchPixelHits
CbmTimesliceManager * fEventManager
int32_t GetPidHypo() const
virtual int32_t GetNofHits() const
const FairTrackParam * GetParamFirst() const
int32_t GetHitIndex(int32_t iHit) const
HitType GetHitType(int32_t iHit) const