CbmRoot
Loading...
Searching...
No Matches
CbmStsRecoBeamSpot.h
Go to the documentation of this file.
1/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Dario Ramirez [committer] */
4
5#ifndef CBMSTSRECOBEAMSPOT_H
6#define CBMSTSRECOBEAMSPOT_H
7
8#include "CbmEvent.h"
9#include "CbmGlobalTrack.h"
10#include "CbmStsAnaBase.h"
11#include "CbmStsCluster.h"
12#include "CbmStsHit.h"
13#include "CbmStsTrack.h"
14#include "CbmStsUtils.h"
15#include "CbmTarget.h"
16#include "CbmTrack.h"
17
18#include <FairTask.h>
19
20#include <TClonesArray.h>
21#include <TVector3.h>
22
23#include <cstring>
24#include <map>
25#include <unordered_map>
26#include <unordered_set>
27
36class CbmStsRecoBeamSpot : public FairTask, public CbmStsAnaBase {
37 public:
38 CbmStsRecoBeamSpot() = default;
40
48
49 void AddTarget(CbmTarget* target = nullptr);
50
57 void AddTarget(std::string trg_name = "", CbmTarget* target = nullptr);
58
59 void Exec(Option_t*);
60 InitStatus Init();
61 void FinishTask();
62
63 private:
64 /* Beam Spot sampling range
65 * It is dynamically caculate when multiple targets planes are provided
66 */
67 double fSampleRangeXmin{-10}; // cm
68 double fSampleRangeXmax{+10}; // cm
69 double fSampleRangeYmin{-10}; // cm
70 double fSampleRangeYmax{+10}; // cm
71 double fSampleRangeZmin{-10}; // cm
72 double fSampleRangeZmax{+10}; // cm
73
74 /* Bin width for Beam Spot 2D histograms */
75 double fSampleBinSizeX{0.01};
76 double fSampleBinSizeY{0.01};
77 double fSampleBinSizeZ{0.01};
78
79 std::vector<CbmStsTrack*> fStsTrks;
80 std::map<int32_t, std::vector<CbmStsHit*>> fStsHits;
81
82 std::map<std::string, CbmTarget*> fTargets;
83
84
85 TClonesArray* fCbmEvtArray{nullptr};
86 TClonesArray* fStsTrkArray{nullptr};
87 TClonesArray* fStsHitArray{nullptr};
88 TClonesArray* fStsCluArray{nullptr};
89
91 void BeamSpotReco();
92
93 void BookHistograms();
94
97
101 void ProcessEvent(CbmEvent*);
102
105
109 void ProcessHit(CbmStsHit*);
110
112};
113#endif
Data class for STS clusters.
Data class for a reconstructed hit in the STS.
Data class for STS tracks.
Class characterising one event by a collection of links (indices) to data objects,...
Definition CbmEvent.h:34
CbmStsAnaBase()=default
data class for a reconstructed 3-d hit in the STS
Definition CbmStsHit.h:35
TVector3 ExtrapolateTrackTo(CbmPixelHit *, CbmPixelHit *, CbmTarget *)
Extrapolate a track-let to a target plane.
CbmStsRecoBeamSpot()=default
std::vector< CbmStsTrack * > fStsTrks
void AddTarget(CbmTarget *target=nullptr)
Add a CbmTarget object to the list of targets.
TClonesArray * fCbmEvtArray
void ProcessEvent(CbmEvent *)
Process an Cbm events It filters event based on the provided CbmCutMap.
ClassDef(CbmStsRecoBeamSpot, 1)
void ProcessStsTrack(CbmGlobalTrack *)
Process an STS track.
TClonesArray * fStsCluArray
void ProcessHit(CbmStsHit *)
Process an STS hit It filters hits based on the provided CbmCutMap.
void BeamSpotReco()
Reconstruct the beam spot at each target planes.
std::map< std::string, CbmTarget * > fTargets
std::map< int32_t, std::vector< CbmStsHit * > > fStsHits
TClonesArray * fStsTrkArray
TClonesArray * fStsHitArray
~CbmStsRecoBeamSpot()=default
Class for constructing the geometry of the CBM target.
Definition CbmTarget.h:37