21#include "FairRootManager.h"
22#include "TClonesArray.h"
23#include "TStopwatch.h"
37 : FairTask(
"CbmBuildEventsFromTracksIdeal")
44 , fStsTrackMatchArray(nullptr)
64 FairRootManager* ioman = FairRootManager::Instance();
72 if (mcManager ==
nullptr) LOG(fatal) << GetName() <<
": No CbmMCDataManager!";
75 if (
fMCTracks ==
nullptr) LOG(fatal) << GetName() <<
": No MCTrack data!";
79 LOG(error) << GetName() <<
"MC Event List not found!";
84 fStsTracks = (TClonesArray*) ioman->GetObject(
"StsTrack");
89 LOG(error) << GetName() <<
"track match array not found!";
93 fStsHits = (TClonesArray*) ioman->GetObject(
"StsHit");
96 fMcPoints = (TClonesArray*) ioman->GetObject(
"StsPoint");
101 fEvents =
new TClonesArray(
"CbmEvent", 100);
102 ioman->Register(
"CbmEvent",
"Cbm_Event",
fEvents, IsOutputBranchPersistent(
"CbmEvent"));
114 std::map<Int_t, CbmEvent*> eventMap;
119 UInt_t nTracks =
fStsTracks->GetEntriesFast();
122 vector<vector<UInt_t>> vKFPTrack1;
126 vKFPTrack1.resize(nMCEvents);
129 for (
unsigned int iTrack = 0; iTrack < nTracks; iTrack++) {
135 Float_t bestWeight = 0.f;
136 Float_t totalWeight = 0.f;
137 Int_t mcTrackId = -1;
140 for (
int iLink = 0; iLink < stsTrackMatch->
GetNofLinks(); iLink++) {
145 link = stsTrackMatch->
GetLink(iLink);
149 mcTrackId = iMCTrack;
152 if (bestWeight / totalWeight < 0.7 || mcTrackId < 0)
continue;
156 vKFPTrack1[mcEvent].push_back(iTrack);
160 for (
unsigned int iEvent = 0; iEvent < vKFPTrack1.size(); iEvent++) {
162 Int_t nEvents =
fEvents->GetEntriesFast();
164 if (vKFPTrack1[iEvent].
size() > 1) {
166 event =
new ((*fEvents)[nEvents])
CbmEvent(iEvent);
ClassImp(CbmConverterManager)
Data class for a reconstructed hit in the STS.
Data class for STS tracks.
static constexpr size_t size()
Task class for associating digis to events.
CbmBuildEventsFromTracksIdeal()
TClonesArray * fMcPoints
Input array (class CbmStsDigi)
virtual ~CbmBuildEventsFromTracksIdeal()
virtual void Exec(Option_t *opt)
CbmMCEventList * fEventList
TClonesArray * fStsTracks
Input array (class CbmStsDigi)
TClonesArray * fStsHits
Input array (class CbmStsDigi)
TClonesArray * fEvents
Output array (class CbmEvent)
CbmMCDataArray * fMCTracks
Input array (class CbmStsDigi)
TClonesArray * fStsTrackMatchArray
virtual InitStatus Init()
Class characterising one event by a collection of links (indices) to data objects,...
void SetStsTracks(std::vector< uint32_t > &indexVector)
Sets the index array for STS tracks. Old content will be overwritten.
Access to a MC data branch for time-based analysis.
Task class creating and managing CbmMCDataArray objects.
CbmMCDataObject * GetObject(const char *name)
CbmMCDataArray * InitBranch(const char *name)
Container class for MC events with number, file and start time.
std::size_t GetNofEvents() const
Number of events in the list @value Number of events.
const CbmLink & GetLink(int32_t i) const
int32_t GetNofLinks() const
vector< int > fRecoEventId
vector< int > fRecoTrackId