CbmRoot
Loading...
Searching...
No Matches
HalCbmFullEvent.cxx
Go to the documentation of this file.
1/* Copyright (C) 2023-2023 Warsaw University of Technology, Warsaw
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Daniel Wielanek [committer] */
4#include "HalCbmFullEvent.h"
5
6#include "CbmMCEvent.h"
7#include "CbmTrackMatchNew.h"
8#include "HalCbmEvent.h"
10#include "HalCbmMCEvent.h"
12#include "HalCbmV0TempTrack.h"
13
14#include <AnalysisTree/Constants.hpp>
15
16#include <Hal/ComplexEvent.h>
17#include <Hal/ComplexEventInterface.h>
18#include <Hal/ComplexTrack.h>
19
20
22
23void HalCbmFullEvent::Update(Hal::EventInterface* interface)
24{
25 Hal::ComplexEventInterface* interf = static_cast<Hal::ComplexEventInterface*>(interface);
26 fImgEvent->Update(interf->GetImag());
27 fRealEvent->Update(interf->GetReal());
28 Hal::Event::ShallowCopyEvent(fRealEvent);
29 fTracks->Clear();
30 fTotalTracksNo = fRealEvent->GetTotalTrackNo();
31 fTracks->ExpandCreateFast(fTotalTracksNo);
32 HalCbmEventInterface* evInt = (HalCbmEventInterface*) interf->GetReal();
33 switch (evInt->GetFormatType()) {
35 UpdateAnalysisTree(interf);
36 } break;
38 UpdateDst(interf);
39 } break;
40
42 //Do nothing
43 } break;
44 }
45}
46
47Hal::Event* HalCbmFullEvent::GetNewEvent() const { return new HalCbmFullEvent(); }
48
50
51HalCbmFullEvent::HalCbmFullEvent(Hal::Event* re, Hal::Event* im) : Hal::ComplexEvent(re, im) {}
52
53void HalCbmFullEvent::UpdateAnalysisTree(Hal::ComplexEventInterface* interface)
54{
55 HalCbmEventInterface* s = (HalCbmEventInterface*) interface->GetReal();
57 auto vecToSim = reco->GetVtx2Sim();
58 Int_t charged = ((HalCbmEvent*) fRealEvent)->GetVertexTracksNo();
59 for (Int_t i = 0; i < charged; i++) {
60 Hal::ComplexTrack* track = (Hal::ComplexTrack*) fTracks->UncheckedAt(i);
61 track->ResetTrack(i, this);
62 track->SetRealTrack(fRealEvent->GetTrack(i));
63 track->Hal::Track::CopyData(fRealEvent->GetTrack(i));
64 Int_t match = vecToSim->GetMatchDirect(i);
65
66 if (match < 0 || match == AnalysisTree::UndefValueInt) {
67 track->SetImgTrack(nullptr);
68 }
69 else {
70 track->SetImgTrack(fImgEvent->GetTrack(match));
71 track->SetMatchID(match);
72 }
73 }
74 //v0 stuff
75 auto v0Tracks = s->GetV0Temp();
76 if (!v0Tracks) return;
77 for (int i = charged; i < charged + fRealEvent->GetTotalV0No(); i++) {
78 Hal::ComplexTrack* track = (Hal::ComplexTrack*) fTracks->UncheckedAt(i);
79 track->ResetTrack(i, this);
80 track->SetRealTrack(fRealEvent->GetTrack(i));
81 track->Hal::Track::CopyData(fRealEvent->GetTrack(i));
82 auto v0Temp = (HalCbmV0TempTrack*) v0Tracks->UncheckedAt(i - charged);
83 Int_t match = v0Temp->GetMcId();
84 if (match < 0 || match == AnalysisTree::UndefValueInt) {
85 track->SetImgTrack(nullptr);
86 track->SetMatchID(-1);
87 }
88 else {
89 track->SetImgTrack(fImgEvent->GetTrack(match));
90 track->SetMatchID(match);
91 }
92 }
93}
94
95void HalCbmFullEvent::UpdateDst(Hal::ComplexEventInterface* interface)
96{
98 HalCbmMCEventInterface* ims = (HalCbmMCEventInterface*) interface->GetImag();
99 for (Int_t i = 0; i < fTotalTracksNo; i++) {
100 Hal::ComplexTrack* track = (Hal::ComplexTrack*) fTracks->UncheckedAt(i);
101 track->ResetTrack(i, this);
102 track->SetRealTrack(fRealEvent->GetTrack(i));
103 track->Hal::Track::CopyData(fRealEvent->GetTrack(i));
104 CbmGlobalTrack* glob = (CbmGlobalTrack*) s->fGlobalTracks->UncheckedAt(i);
105 Int_t sts_index = glob->GetStsTrackIndex();
106 if (sts_index >= 0) {
107 CbmTrackMatchNew* match = (CbmTrackMatchNew*) ims->fStsMatches->UncheckedAt(sts_index);
108 Int_t mcId = match->GetMatchedLink().GetIndex();
109 if (mcId >= 0) {
110 track->SetImgTrack(fImgEvent->GetTrack(mcId));
111 track->SetMatchID(mcId);
112 }
113 }
114 }
115 //
116}
int Int_t
AnalysisTree::Matching * GetVtx2Sim() const
int32_t GetStsTrackIndex() const
const CbmLink & GetMatchedLink() const
Definition CbmMatch.h:41
HalCbm::DataFormat GetFormatType() const
TClonesArray * GetV0Temp() const
CbmAnaTreeRecoContainer * GetContainer() const
void UpdateDst(Hal::ComplexEventInterface *interface)
void UpdateAnalysisTree(Hal::ComplexEventInterface *interface)
virtual void Update(Hal::EventInterface *interface)
virtual ~HalCbmFullEvent()
virtual Hal::Event * GetNewEvent() const