CbmRoot
Loading...
Searching...
No Matches
CbmLitMCTrackCreator.h
Go to the documentation of this file.
1/* Copyright (C) 2011-2020 GSI/JINR-LIT, Darmstadt/Dubna
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Andrey Lebedev [committer], Timur Ablyazimov */
4
11#ifndef CBMLITMCTRACKCREATOR_H_
12#define CBMLITMCTRACKCREATOR_H_
13
14#include "CbmDefs.h"
15#include "CbmLitMCTrack.h"
16#include "CbmStsAddress.h"
17
18#include <cassert>
19#include <iostream>
20#include <map>
21
22class TClonesArray;
23class FairMCPoint;
24class CbmMvdPoint;
25class CbmStsPoint;
26class CbmTrdPoint;
27class CbmMuchPoint;
28class CbmGeoStsPar;
29class CbmStsDigiPar;
31class CbmMCDataArray;
32class CbmDigiManager;
33
41 private:
46
47 public:
51 virtual ~CbmLitMCTrackCreator();
52
57
61 void Create(Int_t eventNum);
62
63
69 bool TrackExists(int mcEventId, int mcId) const
70 {
71 return (fLitMCTracks.count(std::make_pair(mcEventId, mcId)) > 0) ? true : false;
72 }
73
79 const CbmLitMCTrack& GetTrack(int mcEventId, int mcId) const
80 {
81 assert(TrackExists(mcEventId, mcId));
82 return fLitMCTracks.find(std::make_pair(mcEventId, mcId))->second;
83 }
84
89 Int_t GetNofTracks() const { return fLitMCTracks.size(); }
90
91 private:
95 void ReadDataBranches();
96
103 void AddPoints(ECbmModuleId detId, CbmMCDataArray* array, Int_t iEvent);
104
108 void AddRichHits(Int_t iEvent);
109
113 void AddRingParameters(Int_t iEvent);
114
121 void FairMCPointToLitMCPoint(const FairMCPoint* fairPoint, CbmLitMCPoint* litPoint, int eventId, int refId,
122 int stationId);
123
127 void FillStationMaps(Int_t iEvent);
128
129
130 void FairMCPointCoordinatesAndMomentumToLitMCPoint(const FairMCPoint* fairPoint, CbmLitMCPoint* litPoint);
131
133
135
137
139
140 CbmMCDataArray* fMCTracks; // CbmMCTrack array
141 CbmMCDataArray* fMvdPoints; // CbmMvdPoint array
142 CbmMCDataArray* fStsPoints; // CbmStsPoint array
143 CbmMCDataArray* fTrdPoints; // CbmTrdPoint array
144 CbmMCDataArray* fMuchPoints; // CbmMuchPoint array
145 CbmMCDataArray* fTofPoints; // CbmTofPoint array
146 CbmMCDataArray* fRichPoints; // CbmRichPoint array
147 TClonesArray* fRichHits; // CbmRichHit array
149
150 // Stores created CbmLitMCTrack objects.
151 // std::map<MC track index, CbmLitMCTrack object>.
152 std::map<std::pair<int, int>, CbmLitMCTrack> fLitMCTracks;
153
154 // Map <MC point index, station index>
155 std::map<std::pair<int, int>, int> fMvdStationsMap; // for MVD
156 std::map<std::pair<int, int>, int> fStsStationsMap; // for STS
157 std::map<std::pair<int, int>, int> fTrdStationsMap; // for TRD
158 std::map<std::pair<int, int>, int> fMuchStationsMap; // for MUCH
159
160 CbmRichRingFitterEllipseTau* fTauFit; // Ellipse fitter algorithm
161
164};
165
166#endif /* CBMLITMCTRACKCREATOR_H_ */
ECbmModuleId
Enumerator for module Identifiers.
Definition CbmDefs.h:45
Monte-Carlo track.
int Int_t
CbmDigiManager.
Monte-Carlo point.
CbmLitMCTrackCreator(const CbmLitMCTrackCreator &)
void FillStationMaps(Int_t iEvent)
Fill maps for MC points to station id.
std::map< std::pair< int, int >, int > fTrdStationsMap
void StsPointCoordinatesAndMomentumToLitMCPoint(const CbmStsPoint *stsPoint, CbmLitMCPoint *litPoint)
void FairMCPointCoordinatesAndMomentumToLitMCPoint(const FairMCPoint *fairPoint, CbmLitMCPoint *litPoint)
void MuchPointCoordinatesAndMomentumToLitMCPoint(const CbmMuchPoint *muchPoint, CbmLitMCPoint *litPoint)
CbmLitMCTrackCreator operator=(const CbmLitMCTrackCreator &)
void FairMCPointToLitMCPoint(const FairMCPoint *fairPoint, CbmLitMCPoint *litPoint, int eventId, int refId, int stationId)
Convert FairMCPoint to CbmLitMCPoint.
virtual ~CbmLitMCTrackCreator()
Destructor.
bool TrackExists(int mcEventId, int mcId) const
Check whether a track exists in the array.
void AddPoints(ECbmModuleId detId, CbmMCDataArray *array, Int_t iEvent)
Add MC points from a certain detector.
std::map< std::pair< int, int >, int > fMvdStationsMap
std::map< std::pair< int, int >, CbmLitMCTrack > fLitMCTracks
Int_t GetNofTracks() const
Return number of tracks.
void AddRichHits(Int_t iEvent)
Calculate and set number of RICH hits for MC track.
std::map< std::pair< int, int >, int > fMuchStationsMap
void Create(Int_t eventNum)
Creates array of CbmLitMCTracks for current event.
CbmRichRingFitterEllipseTau * fTauFit
std::map< std::pair< int, int >, int > fStsStationsMap
void AddRingParameters(Int_t iEvent)
Fit Rich MC points using ellipse fitter and fill ellipse parameters.
void MvdPointCoordinatesAndMomentumToLitMCPoint(const CbmMvdPoint *mvdPoint, CbmLitMCPoint *litPoint)
void ReadDataBranches()
Read data branches.
void TrdPointCoordinatesAndMomentumToLitMCPoint(const CbmTrdPoint *trdPoint, CbmLitMCPoint *litPoint)
static CbmLitMCTrackCreator * Instance()
Singleton instance.
const CbmLitMCTrack & GetTrack(int mcEventId, int mcId) const
Return CbmLitMCTrack by its index.
Monte-Carlo track.
Access to a MC data branch for time-based analysis.
Here the ring is fitted with Taubin algorithm from A. Ayriyan, G. Ososkov, N. Chernov.