CbmRoot
Loading...
Searching...
No Matches
CbmKresTemperature.cxx
Go to the documentation of this file.
1/* Copyright (C) 2017-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Ievgenii Kres, Florian Uhlig [committer] */
4
19#include "CbmKresTemperature.h"
20
21#include "CbmGlobalTrack.h"
22#include "CbmMCTrack.h"
23#include "CbmStsTrack.h"
24#include "FairRootManager.h"
25#include "TH1.h"
26#include "TH1D.h"
27
28#include <iostream>
29
30using namespace std;
31
33 : fMcTracks(nullptr)
34 , fGlobalTracks(nullptr)
35 , fStsTracks(nullptr)
36 , fHistoList_MC()
37 , MC_pi_minus_Tempr(nullptr)
38 , MC_pi_plus_Tempr(nullptr)
39 , MC_pi_zero_Tempr(nullptr)
40 , MC_proton_Tempr(nullptr)
41 , MC_kaon_zero_Tempr(nullptr)
42 , MC_kaon_plus_Tempr(nullptr)
43 , MC_kaon_minus_Tempr(nullptr)
44 , MC_direct_photons_Tempr(nullptr)
45{
46}
47
49
51{
53
54 FairRootManager* ioman = FairRootManager::Instance();
55 if (nullptr == ioman) { Fatal("CbmKresTemperature::Init", "RootManager not instantised!"); }
56
57 fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack");
58 if (nullptr == fMcTracks) { Fatal("CbmKresTemperature::Init", "No MCTrack array!"); }
59
60 fGlobalTracks = (TClonesArray*) ioman->GetObject("GlobalTrack");
61 if (nullptr == fGlobalTracks) { Fatal("CbmKresTemperature::Init", "No GlobalTrack array!"); }
62
63 fStsTracks = (TClonesArray*) ioman->GetObject("StsTrack");
64 if (nullptr == fStsTracks) { Fatal("CbmKresTemperature::Init", "No StsTrack array!"); }
65}
66
67void CbmKresTemperature::Exec(int fEventNumTempr)
68{
69 cout << "CbmKresTemperature, event No. " << fEventNumTempr << endl;
70
71 // ========================================================================================
73 Int_t nofMcTracks = fMcTracks->GetEntriesFast();
74 for (int i = 0; i < nofMcTracks; i++) {
75 CbmMCTrack* mctrack = (CbmMCTrack*) fMcTracks->At(i);
76 if (mctrack == nullptr) continue;
77
78
79 TVector3 v, momentum;
80
81 if (mctrack->GetMotherId() == -1 && mctrack->GetRapidity() > 1.2 && mctrack->GetRapidity() < 4.0
82 && mctrack->GetPt() < 2.0) {
83
84 //***** pi0 analysis
85 //if (TMath::Abs(mctrack->GetPdgCode()) == 111 && mctrack->GetMotherId() == -1) {
86 if (mctrack->GetPdgCode() == 111) {
87 mctrack->GetStartVertex(v);
88 mctrack->GetMomentum(momentum);
89 double m0 = 0.1349766; // Gev/c^2
90 double pt = mctrack->GetPt();
91 double mt = TMath::Sqrt(pt * pt + m0 * m0);
92 MC_pi_zero_Tempr->Fill(mt - m0);
93 }
94
95 //***** direct photons analysis
96 if (mctrack->GetPdgCode() == 22) {
97 mctrack->GetStartVertex(v);
98 mctrack->GetMomentum(momentum);
99 double pt = mctrack->GetPt();
100 MC_direct_photons_Tempr->Fill(pt);
101 }
102
103 //***** pi+ analysis
104 //if (mctrack->GetPdgCode() == 211 && mctrack->GetMotherId() == -1) {
105 if (mctrack->GetPdgCode() == 211) {
106 mctrack->GetStartVertex(v);
107 mctrack->GetMomentum(momentum);
108 double m0 = 0.13957018; // Gev/c^2
109 double pt = mctrack->GetPt();
110 double mt = TMath::Sqrt(pt * pt + m0 * m0);
111 MC_pi_plus_Tempr->Fill(mt - m0);
112 }
113
114 //***** pi- analysis
115 //if (mctrack->GetPdgCode() == -211 && mctrack->GetMotherId() == -1) {
116 if (mctrack->GetPdgCode() == -211) {
117 mctrack->GetStartVertex(v);
118 mctrack->GetMomentum(momentum);
119 double m0 = 0.13957018; // Gev/c^2
120 double pt = mctrack->GetPt();
121 double mt = TMath::Sqrt(pt * pt + m0 * m0);
122 MC_pi_minus_Tempr->Fill(mt - m0);
123 }
124
125 //***** proton analysis
126 //if (mctrack->GetPdgCode() == 2212 && mctrack->GetMotherId() == -1) {
127 if (mctrack->GetPdgCode() == 2212) {
128 mctrack->GetStartVertex(v);
129 mctrack->GetMomentum(momentum);
130 double m0 = 0.9382720813; // Gev/c^2
131 double pt = mctrack->GetPt();
132 double mt = TMath::Sqrt(pt * pt + m0 * m0);
133 MC_proton_Tempr->Fill(mt - m0);
134 }
135
136 //***** kaon0_S analysis
137 //if (mctrack->GetPdgCode() == 310 && mctrack->GetMotherId() == -1) {
138 if (mctrack->GetPdgCode() == 310) {
139 mctrack->GetStartVertex(v);
140 mctrack->GetMomentum(momentum);
141 double m0 = 0.497614; // Gev/c^2
142 double pt = mctrack->GetPt();
143 double mt = TMath::Sqrt(pt * pt + m0 * m0);
144 MC_kaon_zero_Tempr->Fill(mt - m0);
145 }
146
147 //***** kaon+ analysis
148 //if (mctrack->GetPdgCode() == 321 && mctrack->GetMotherId() == -1) {
149 if (mctrack->GetPdgCode() == 321) {
150 mctrack->GetStartVertex(v);
151 mctrack->GetMomentum(momentum);
152 double m0 = 0.493677; // Gev/c^2
153 double pt = mctrack->GetPt();
154 double mt = TMath::Sqrt(pt * pt + m0 * m0);
155 MC_kaon_plus_Tempr->Fill(mt - m0);
156 }
157
158 //***** kaon- analysis
159 //if (mctrack->GetPdgCode() == -321 && mctrack->GetMotherId() == -1) {
160 if (mctrack->GetPdgCode() == -321) {
161 mctrack->GetStartVertex(v);
162 mctrack->GetMomentum(momentum);
163 double m0 = 0.493677; // Gev/c^2
164 double pt = mctrack->GetPt();
165 double mt = TMath::Sqrt(pt * pt + m0 * m0);
166 MC_kaon_minus_Tempr->Fill(mt - m0);
167 }
168 }
169 }
170}
171
173{
174 MC_pi_minus_Tempr->SetOption("P");
175 MC_pi_minus_Tempr->SetMarkerStyle(20);
176 MC_pi_plus_Tempr->SetOption("P");
177 MC_pi_plus_Tempr->SetMarkerStyle(20);
178 MC_pi_zero_Tempr->SetOption("P");
179 MC_pi_zero_Tempr->SetMarkerStyle(20);
180 MC_direct_photons_Tempr->SetOption("P");
181 MC_direct_photons_Tempr->SetMarkerStyle(20);
182
183 MC_proton_Tempr->SetOption("P");
184 MC_proton_Tempr->SetMarkerStyle(20);
185 MC_kaon_zero_Tempr->SetOption("P");
186 MC_kaon_zero_Tempr->SetMarkerStyle(20);
187 MC_kaon_plus_Tempr->SetOption("P");
188 MC_kaon_plus_Tempr->SetMarkerStyle(20);
189 MC_kaon_minus_Tempr->SetOption("P");
190 MC_kaon_minus_Tempr->SetMarkerStyle(20);
191
192 gDirectory->mkdir("temperature");
193 gDirectory->cd("temperature");
194
195 gDirectory->mkdir("MC");
196 gDirectory->cd("MC");
197 for (UInt_t i = 0; i < fHistoList_MC.size(); i++) {
198 fHistoList_MC[i]->Write();
199 }
200 gDirectory->cd("..");
201
202 gDirectory->cd("..");
203}
204
206{
208 new TH1D("MC_pi_minus_Tempr", "Monte Carlo, primary #pi^{-}; m_{t}-m_{0} distribution", 100, 0, 2);
210
212 new TH1D("MC_pi_plus_Tempr", "Monte Carlo, primary #pi^{+}; m_{t}-m_{0} distribution", 100, 0, 2);
214
216 new TH1D("MC_pi_zero_Tempr", "Monte Carlo, primary #pi^{0}; m_{t}-m_{0} distribution", 100, 0, 2);
218
220 new TH1D("MC_direct_photons_Tempr", "Monte Carlo, direct #gamma; m_{t}-m_{0} distribution", 100, 0, 2);
222
223 MC_proton_Tempr = new TH1D("MC_proton_Tempr", "Monte Carlo, primary #p; m_{t}-m_{0} distribution", 100, 0, 2);
225
227 new TH1D("MC_kaon_zero_Tempr", "Monte Carlo, primary #kaon^{S0}; m_{t}-m_{0} distribution", 100, 0, 2);
229
231 new TH1D("MC_kaon_plus_Tempr", "Monte Carlo, primary #kaon^{+}; m_{t}-m_{0} distribution", 100, 0, 2);
233
235 new TH1D("MC_kaon_minus_Tempr", "Monte Carlo, primary #kaon^{-}; m_{t}-m_{0} distribution", 100, 0, 2);
237}
Data class for STS tracks.
fscal v[fmask::Size]
Definition KfSimdPseudo.h:4
void Exec(int fEventNumTempr)
TClonesArray * fGlobalTracks
TClonesArray * fMcTracks
TClonesArray * fStsTracks
vector< TH1 * > fHistoList_MC
double GetPt() const
Definition CbmMCTrack.h:97
void GetMomentum(TVector3 &momentum) const
Definition CbmMCTrack.h:170
int32_t GetMotherId() const
Definition CbmMCTrack.h:69
int32_t GetPdgCode() const
Definition CbmMCTrack.h:68
double GetRapidity() const
void GetStartVertex(TVector3 &vertex) const
Definition CbmMCTrack.h:176
Hash for CbmL1LinkKey.