Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DrawFieldMap.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file DrawFieldMap.C
1 // $Id: $
2 
11 #include "SaveCanvas.C"
12 
13 void DrawFieldMap(const TString sfield_map = "/phenix/upgrades/decadal/fieldmaps/fsPHENIX.2d.root")
14 //void DrawFieldMap(const TString sfield_map = "/phenix/upgrades/decadal/fieldmaps/sPHENIX.2d.root")
15 {
16  gROOT->LoadMacro("sPhenixStyle.C");
18 
19  TFile *_file0 = TFile::Open(sfield_map);
20  TTree *fieldmap = (TTree *) _file0->GetObjectChecked("fieldmap", "TTree");
21 
22  TH2F *hfield = new TH2F("hfield", "hfield", 480 / 2, -30, 450, 280 / 2, 0, 280);
23  TH2F *hbendingfield = hfield->Clone("hbendingfield");
24 
25  fieldmap->SetAlias("perb_angle", "atan2(r,z) + pi/2");
26  fieldmap->SetAlias("bendingfield", "br*cos(perb_angle) + bz*sin(perb_angle)");
27 
28  fieldmap->Draw("r:z>>hfield", "sqrt(br**2 + bz**2)", "goff");
29  fieldmap->Draw("r:z>>hbendingfield", "bendingfield", "goff");
30 
31  TCanvas *c1 = new TCanvas(TString("DrawFieldMap_hfield_") + gSystem->BaseName(sfield_map),
32  TString("DrawFieldMap_hfield_") + gSystem->BaseName(sfield_map), 1800,
33  900);
34  c1->Divide(1, 1);
35  int idx = 1;
36  TPad *p;
37  p = (TPad *) c1->cd(idx++);
38  c1->Update();
39 
40  p->SetRightMargin(0.2);
41 
42  hfield->GetZaxis()->SetRangeUser(0., 2.5);
43  hfield->SetTitle("#it{#bf{sPHENIX}} Field Map;z [cm];R [cm];Field strength [T]");
44  hfield->GetYaxis()->SetTitleOffset(0.9);
45  hfield->Draw("colz");
46 
47  // %h-going ECAL
48  // \newcommand{ \hecalfsphenix }
49  // {
50  //
51  // % towerMap_FEMC_v005.txt
52  // \draw[fill=blizzardblue] ( 3.28250, 1.82655 ) -- ( 3.28250, 0.1 ) -- ( 2.91750, 0.1 ) -- ( 2.91750, 1.82655 ) -- ( 3.28250, 1.82655 );
53  //
54  // }
55  TBox *b = new TBox(2.91750 * 100, 0.1 * 100, 3.2 * 100, 1.82655 * 100);
56  b->SetFillColor(0);
57  b->SetFillStyle(0);
58  b->SetLineColor(kGray);
59  b->SetLineWidth(4);
60  b->Draw();
61  //
62  // %h-going HCAL
63  // \newcommand{ \hhcalfsphenix }
64  // {
65  //
66  // % towerMap_FHCAL_v004.txt
67  // \draw[fill=bluegray] ( 4.5, 2.62 ) -- ( 4.5, 0.05 ) -- ( 3.5, 0.05 ) -- ( 3.5, 2.62 ) -- ( 4.5, 2.62 );
68  //
69  // }
70  TBox *b = new TBox(3.5 * 100, 0.05 * 100, 4.5 * 100, 2.62 * 100);
71  b->SetFillColor(0);
72  b->SetFillStyle(0);
73  b->SetLineColor(kGray);
74  b->SetLineWidth(4);
75  b->Draw();
76 
77  // %h-going GEM fsPhenix
78  // \newcommand{ \hgemfsphenix }
79  // {
80  //
81  // \draw[ultra thick,bazaar] ( 1.2, 0.1 ) -- ( 1.2, 0.8 );
82  // \draw[ultra thick,bazaar] ( 1.5, 0.1 ) -- ( 1.5, 1 );
83  // \draw[ultra thick,bazaar] ( 2.7, 0.1 ) -- ( 2.7, 0.8 ) -- ( 2.5, 1.3);
84  //
85  // }
86  TLine *l = new TLine(1.2 * 100, 0.1 * 100, 1.2 * 100, 0.8 * 100);
87  l->SetLineColor(kGray);
88  l->SetLineWidth(4);
89  l->Draw();
90  TLine *l = new TLine(1.5 * 100, 0.1 * 100, 1.5 * 100, 1 * 100);
91  l->SetLineColor(kGray);
92  l->SetLineWidth(4);
93  l->Draw();
94  TLine *l = new TLine(2.7 * 100, 0.1 * 100, 2.7 * 100, 0.8 * 100);
95  l->SetLineColor(kGray);
96  l->SetLineWidth(4);
97  l->Draw();
98  TLine *l = new TLine(2.7 * 100, 0.8 * 100, 2.5 * 100, 1.3 * 100);
99  l->SetLineColor(kGray);
100  l->SetLineWidth(4);
101  l->Draw();
102 
103  TBox *b = new TBox(-30, 0.02 * 100, 100, 78);
104  b->SetFillColor(0);
105  b->SetFillStyle(0);
106  b->SetLineColor(kGray);
107  b->SetLineWidth(4);
108  b->Draw();
109 
110  SaveCanvas(c1, TString(c1->GetName()), kTRUE);
111  // c1->Print(TString(c1->GetName())+".pdf");
112  c1->Print(TString(c1->GetName()) + ".eps");
113  // c1->Print(TString(c1->GetName())+".svg");
114 
115  // TCanvas *c1 = new TCanvas("DrawFieldMap_hbendingfield", "DrawFieldMap_hbendingfield", 1800,
116  // 900);
117  // c1->Divide(1, 1);
118  // int idx = 1;
119  // TPad *p;
120  // p = (TPad *) c1->cd(idx++);
121  // c1->Update();
122  //
123  // p->SetRightMargin(0.1);
124  //
125  // hbendingfield->Draw("colz");
126 
127  // SaveCanvas(c1, TString(c1->GetName()), kTRUE);
128 
129  // output field map
130 
131  const int n_data = fieldmap->Draw("r:z:br:bz", "", "goff");
132 
133  string file_name = string(c1->GetName()) + ".data";
134  fstream foutput(file_name.c_str(), ios_base::out);
135 
136  for (int i = 0; i < n_data; ++i)
137  {
138  foutput << (fieldmap->GetV1())[i] << "\t";
139  foutput << (fieldmap->GetV2())[i] << "\t";
140  foutput << (fieldmap->GetV3())[i] << "\t";
141  foutput << (fieldmap->GetV4())[i] << "\n";
142  }
143 
144  foutput.close();
145 
146  TFile *_file1 = TFile::Open(TString("ReverseBr_") + gSystem->BaseName(sfield_map), "recreate");
147 
148  TNtuple *ReverseBr_fieldmap =
149  new TNtuple("fieldmap",
150  "Field Map for fsPHENIX with corrected Br",
151  "z:r:bz:br");
152 
153  for (int i = 0; i < n_data; ++i)
154  {
155  ReverseBr_fieldmap->Fill((fieldmap->GetV2())[i], (fieldmap->GetV1())[i], (fieldmap->GetV4())[i], -(fieldmap->GetV3())[i]);
156  }
157  ReverseBr_fieldmap->Write();
158  _file1->Close();
159 }