14 #include<TClonesArray.h>
19 #include<TApplication.h>
22 #include<FairRadMapPoint.h>
59 if ((
int)(
last_percent*100) == (
int)(percent*100))
return;
64 for (
int i = 0;
i < len; ++
i) {
65 if (
i < static_cast<int>(len * percent)) {
71 cout <<
"[" << progress <<
"] " << (
static_cast<int>(100 * percent)) <<
"%";
76 int main(
int nargs,
char** args) {
79 gROOT->Macro(
"$VMCWORKDIR/gconfig/rootlogon.C");
80 TApplication myapp(
"myapp",0,0);
87 cout <<
" Hint: you may change the standard path from "
89 <<
" to any other folder by providing the path as an argument! "
92 cout <<
" Error: too many arguments! " << endl;
102 std::cout <<
"MCFile : " << MCFile.Data() << std::endl;
105 TClonesArray* true_tracks =
new TClonesArray(
"PndMCTrack");
106 tMC.SetBranchAddress(
"MCTrack", &true_tracks);
108 TClonesArray* true_points =
new TClonesArray(
"PndSdsMCPoint");
109 tMC.SetBranchAddress(
"LMDPoint", &true_points);
111 TClonesArray* radmap_points =
new TClonesArray(
"FairRadMapPoint");
112 tMC.SetBranchAddress(
"RadMap", & radmap_points);
114 TClonesArray* radlen_points =
new TClonesArray(
"FairRadLenPoint");
115 tMC.SetBranchAddress(
"RadLen", & radlen_points);
118 TCanvas canvas_rad_map_x_y(
"canvas_rad_map_x_y",
"radiation map x y", 600, 600);
119 TH2D radiation_map_x_y(
"radiation_map_x_y",
"radiation map x y", 500, 15, 45, 500, -15, 15);
120 radiation_map_x_y.Draw(
"COLZ");
121 radiation_map_x_y.SetXTitle(
"X [cm]");
122 radiation_map_x_y.SetYTitle(
"Y [cm]");
123 radiation_map_x_y.SetZTitle(
"dose");
124 canvas_rad_map_x_y.SetLogz();
126 TCanvas canvas_rad_map_x_z(
"canvas_rad_map_x_z",
"radiation map x z", 1000, 600);
127 TH2D radiation_map_x_z(
"radiation_map_x_z",
"radiation map x z", 1000, 1100, 1200, 400, 10, 50);
128 radiation_map_x_z.Draw(
"COLZ");
129 radiation_map_x_z.SetXTitle(
"Z [cm]");
130 radiation_map_x_z.SetYTitle(
"X [cm]");
131 radiation_map_x_z.SetZTitle(
"dose");
132 canvas_rad_map_x_z.SetLogz();
134 TCanvas canvas_rad_map_x_y_plane_0(
"canvas_rad_map_x_y_plane_0",
"radiation map x y of plane 0", 600, 600);
135 TH2D radiation_map_x_y_plane_0(
"radiation_map_x_y_plane_0",
"radiation map x y of plane 0", 150, 10, 40, 150, -15, 15);
136 radiation_map_x_y_plane_0.Draw(
"COLZ");
137 radiation_map_x_y_plane_0.SetXTitle(
"X [cm]");
138 radiation_map_x_y_plane_0.SetYTitle(
"Y [cm]");
139 radiation_map_x_y_plane_0.SetZTitle(
"dose");
140 canvas_rad_map_x_y_plane_0.SetLogz();
147 int nEvents = tMC.GetEntries();
148 cout <<
" reading " << nEvents <<
" Events " << endl;
149 for (Int_t iEvent = 0; iEvent <
nEvents; iEvent++) {
151 tMC.GetEntry(iEvent);
154 int nradmappoints = radmap_points->GetEntriesFast();
155 for (
int iradmappoint = 0; iradmappoint < nradmappoints; iradmappoint++){
156 FairRadMapPoint* radmap_point = (FairRadMapPoint*) radmap_points->At(iradmappoint);
157 const TVector3& position = radmap_point->GetPosition();
158 double dose = radmap_point->GetDose();
160 int detID = radmap_point->GetDetectorID();
167 if (position.Z() > 1105 && position.Z() < 1130)
168 radiation_map_x_y_plane_0.Fill(position.X(), position.Y(), dose);
169 radiation_map_x_y.Fill(position.X(), position.Y(), dose);
170 radiation_map_x_z.Fill(position.Z(), position.X(), dose);
174 if ((iEvent%1000)==0){
175 canvas_rad_map_x_y.cd();
176 radiation_map_x_y.Draw(
"COLZ");
177 canvas_rad_map_x_y.Update();
178 canvas_rad_map_x_y_plane_0.cd();
179 radiation_map_x_y_plane_0.Draw(
"COLZ");
180 canvas_rad_map_x_y_plane_0.Update();
181 canvas_rad_map_x_z.cd();
182 radiation_map_x_z.Draw(
"COLZ");
183 canvas_rad_map_x_z.Update();
187 canvas_rad_map_x_y.Print(
"dose_x_y.pdf");
188 canvas_rad_map_x_y_plane_0.Print(
"dose_x_y_plane_0.pdf");
189 canvas_rad_map_x_z.Print(
"dose_x_z.pdf");
int main(int nargs, char **args)
void DrawProgressBar(int len, double percent)
void Read_transformation_matrices(string filename="", bool aligned=true, int version_number=geometry_version)
static PndLmdDim & Get_instance()