StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
hits2cluster_laser.C
1 // $Id: hits2cluster_laser.C,v 1.4 2008/05/16 18:36:56 jcs Exp $
2 //
3 // $Log: hits2cluster_laser.C,v $
4 // Revision 1.4 2008/05/16 18:36:56 jcs
5 // update FTPC calibration macros
6 //
7 // Revision 1.3 2007/01/19 08:23:07 jcs
8 // replace true, false with kTRUE, kFALSE
9 //
10 // Revision 1.2 2006/03/15 15:14:06 jcs
11 // add lines for listing CVS update info
12 //
13 
14 struct HIT
15 {
16  Float_t x,y,z;
17  Float_t rad,phi;
18  Float_t raderror,phierror;
19 };
20 
21 struct CLUSTER
22 {
23  Float_t timepos,padpos,timesigma,padsigma;
24  Float_t peakheight, charge;
25  Int_t timebin,pad;
26  Int_t padlength,timelength;
27  Int_t row,sec;
28  Int_t flag;
29  Int_t numpeaks;
30 };
31 
32 struct EVENT
33 {
34  Float_t run;
35  Int_t nevent;
36 };
37 
38 
39 void hits2cluster_laser(TString eingabe,int evt,int laser_sec)
40 {
41 
42  CLUSTER cluster;
43  HIT hit;
44  EVENT event;
45 
46  // plain Style
47  gROOT->Reset();
48  gStyle->SetTitleOffset(1.25);
49  gStyle->SetCanvasBorderMode(0);
50  gStyle->SetPadBorderMode(0);
51  gStyle->SetPadColor(0);
52  gStyle->SetCanvasColor(0);
53  gStyle->SetTitleColor(0);
54  gStyle->SetStatColor(0);
55  gStyle->SetPalette(1);
56  gStyle->SetOptStat(11);
57  gStyle->SetOptFit();
58 
59  Float_t fpad,ftime,fflag,frow, fsec;
60  Int_t maxentries;
61 
62  TString histoname;
63 
64  TCanvas *c1 = new TCanvas("c1","ps",200,10,700,500);
65  c1->Divide(2,1);
66 
67  cout<<"Macro cluster_hits..."<<endl;
68  TFile *f = new TFile(eingabe+".root");
69  //TFile *f2=new TFile(eingabe+"-flag.root","RECREATE");
70  eingabe +="_evt_";
71  eingabe +=evt;
72  eingabe +="_lsec_";
73  eingabe +=laser_sec;
74  eingabe +=".ps";
75 
76  //eingabe +="-h2cl_gain.ps";
77  TPostScript *fps=new TPostScript(eingabe,112);
78 
79  // read in ntuple to get hit position and flag
80 
81  dtree=(TTree*) f->Get("cl");
82  bhit=dtree->GetBranch("hit");
83  bhit->SetAddress(&hit);
84  bcluster=dtree->GetBranch("cluster");
85  bcluster->SetAddress(&cluster);
86  bevent=dtree->GetBranch("event");
87  bevent->SetAddress(&event);
88 
89  topdir=(TDirectory*) f->Get("histograms");
90 
91  TString dirname="evt_";
92  dirname +=evt;
93  dirname +="_gain";
94 
95  //sprintf(dirname,"evt_%d",evt);
96 
97 
98  histdir=(TDirectory*) topdir->Get(dirname);
99 
100  //topdir->cd();
101  //histdir->cd();
102 
103  int maxentries = (int) bcluster->GetEntries();
104 
105  for (int i=1;i<=60;i++)
106  {
107  if (laser_sector(1,laser_sec,i))
108  {
109  fps->NewPage();
110  for(int j=1;j<=2;j++)
111  {
112  histoname="hsec";
113  histoname +=i;
114  histoname +="_hrow";
115  histoname +=j;
116  histoname +="_gain";
117  TH1F *histo=(TH1F*) histdir->Get(histoname);
118  c1->cd(j);
119  //histo->SetMarkerSize(0.25);
120  //histo->DrawCopy("text");
121  histo->DrawCopy("colz");
122  TH2F *flag0=new TH2F("flag0","flag0",160,0,160,255,0,255);
123  flag0->SetMarkerStyle(20);flag0->SetMarkerSize(0.5);flag0->SetMarkerColor(1);
124  TH2F *flag1=new TH2F("flag1","flag1",160,0,160,255,0,255);
125  flag1->SetMarkerStyle(29);flag1->SetMarkerSize(0.5);flag1->SetMarkerColor(7);
126  TH2F *flag2=new TH2F("flag2","flag2",160,0,160,255,0,255);
127  flag2->SetMarkerStyle(21);flag2->SetMarkerSize(0.5);flag2->SetMarkerColor(3);
128  TH2F *flag3=new TH2F("flag3","flag3",160,0,160,255,0,255);
129  flag3->SetMarkerStyle(23);flag3->SetMarkerSize(0.5);flag3->SetMarkerColor(5);
130  TH2F *flag4=new TH2F("flag4","flag4",160,0,160,255,0,255);
131  flag4->SetMarkerStyle(29);flag4->SetMarkerSize(0.5);flag4->SetMarkerColor(3);
132  TH2F *flag5=new TH2F("flag5","flag5",160,0,160,255,0,255);
133  flag5->SetMarkerStyle(22);flag5->SetMarkerSize(0.5);flag5->SetMarkerColor(6);
134  TH2F *flag10=new TH2F("flag10","flag10",160,0,160,255,0,255);
135  flag10->SetMarkerStyle(20);flag10->SetMarkerSize(0.5);flag10->SetMarkerColor(2);
136  TH2F *flag11=new TH2F("flag11","flag11",160,0,160,255,0,255);
137  flag11->SetMarkerStyle(29);flag11->SetMarkerSize(0.5);flag11->SetMarkerColor(7);
138  TH2F *flag12=new TH2F("flag12","flag12",160,0,160,255,0,255);
139  flag12->SetMarkerStyle(29);flag12->SetMarkerSize(0.5);flag12->SetMarkerColor(3);
140  TH2F *flag13=new TH2F("flag13","flag13",160,0,160,255,0,255);
141  flag13->SetMarkerStyle(23);flag13->SetMarkerSize(0.5);flag13->SetMarkerColor(5);
142  TH2F *flag14=new TH2F("flag14","flag14",160,0,160,255,0,255);
143  flag14->SetMarkerStyle(29);flag14->SetMarkerSize(0.5);flag14->SetMarkerColor(3);
144  TH2F *flag15=new TH2F("flag15","flag15",160,0,160,255,0,255);
145  flag15->SetMarkerStyle(22);flag15->SetMarkerSize(0.5);flag15->SetMarkerColor(6);
146  TH2F *flag16=new TH2F("flag16","flag16",160,0,160,255,0,255);
147  flag16->SetMarkerStyle(28);flag16->SetMarkerSize(0.5);flag16->SetMarkerColor(8);
148 
149  for (int k=0;k<=maxentries;k++)
150  {
151  bevent->GetEntry(k);
152  bcluster->GetEntry(k);
153 
154  if (event.nevent==evt)
155  {
156  //cout<<"event.nevent = "<<event.nevent<<endl;
157 
158  if (cluster.sec==i && cluster.row==j)
159  {
160  //cout<<"sec = "<<cluster.sec<<" row = "<<cluster.row<<endl;
161  //cout<<"flag= "<<cluster.flag<<endl;
162  //cout<<" padpos = "<<cluster.padpos<<" timepos = "<<cluster.timepos<<endl;
163 
164  if (cluster.flag==0) {flag0->Fill(cluster.padpos,cluster.timepos);}
165 
166  if (cluster.flag==1) {flag1->Fill(cluster.padpos,cluster.timepos);}
167 
168  if (cluster.flag==2) {flag2->Fill(cluster.padpos,cluster.timepos);}
169 
170  if (cluster.flag==3) {flag3->Fill(cluster.padpos,cluster.timepos);}
171 
172  if (cluster.flag==4) {flag4->Fill(cluster.padpos,cluster.timepos);}
173 
174  if (cluster.flag==5) {flag5->Fill(cluster.padpos,cluster.timepos);}
175 
176  if (cluster.flag==10) {flag10->Fill(cluster.padpos,cluster.timepos);}
177 
178  if (cluster.flag==11) {flag11->Fill(cluster.padpos,cluster.timepos);}
179 
180  if (cluster.flag==12) {flag12->Fill(cluster.padpos,cluster.timepos);}
181 
182  if (cluster.flag==13) {flag13->Fill(cluster.padpos,cluster.timepos);}
183 
184  if (cluster.flag==14) {flag14->Fill(cluster.padpos,cluster.timepos);}
185 
186  if (cluster.flag==15) {flag15->Fill(cluster.padpos,cluster.timepos);}
187 
188  if (cluster.flag>=16) {flag16->Fill(cluster.padpos,cluster.timepos);}
189 
190 
191  }
192  }
193  }
194 
195  flag0->DrawCopy("same");
196  flag1->DrawCopy("same");
197  flag2->DrawCopy("same");
198  flag3->DrawCopy("same");
199  flag4->DrawCopy("same");
200  flag5->DrawCopy("same");
201 
202  flag10->DrawCopy("same");
203  flag11->DrawCopy("same");
204  flag12->DrawCopy("same");
205  flag13->DrawCopy("same");
206  flag14->DrawCopy("same");
207  flag15->DrawCopy("same");
208  flag16->DrawCopy("same");
209  TLegend *leg = new TLegend(0.46,0.72,0.80,0.86);
210  leg->SetFillColor(10);
211  leg->SetTextSize(0.03);
212  leg->AddEntry(flag0,"flag=0","P");
213  leg->AddEntry(flag10,"flag=10","P");
214  leg->AddEntry(flag11,"flag=1 & flag=11","P");
215  leg->AddEntry(flag3,"flag=3 & flag=13","P");
216  leg->AddEntry(flag4,"flag=4 & flag=14","P");
217  leg->AddEntry(flag15,"flag=5 & flag=15","P");
218  leg->AddEntry(flag16,"flag=6 & flag=16","P");
219  //leg->AddEntry(flag11,"flag==11","P");
220  //leg->AddEntry(flag14,"flag==14","P");
221  //leg->AddEntry(flag15,"flag==15","P");
222  //leg->AddEntry(flag16,"flag==16","P");
223  leg->Draw();
224  c1->Update();
225  flag0->Delete();
226  flag1->Delete();
227  flag2->Delete();
228  flag3->Delete();
229  flag4->Delete();
230  flag5->Delete();
231 
232  flag10->Delete();
233  flag11->Delete();
234  flag12->Delete();
235  flag13->Delete();
236  flag14->Delete();
237  flag15->Delete();
238  flag16->Delete();
239  //leg->Delete();
240 
241  }
242  }
243  else break
244  }
245 
246  cout<<"Ps-file created !"<<endl;
247  //fps->Close();
248  //f2->Write();
249  //f2->Close();
250  f->Close();
251  leg->Delete();
252  c1->Delete();
253 }
254 
255 //---------------------------------------------------------------
256 
257 bool laser_sector(int whichftpc,int whichsec,int sec)
258 {
259  if (whichftpc==2)
260  {
261  switch(whichsec)
262  {
263 
264  case 0:
265  // all sectors
266  if (sec>30)
267  return kTRUE;
268  break;
269  case 1:
270  if (sec==32 || sec==38 || sec==44 || sec==50 || sec==56)
271  return kTRUE;
272  else
273  return kFALSE;
274  break;
275  case 2:
276  if (sec==34 || sec==40 || sec==46 || sec==52 || sec==58)
277  return kTRUE;
278  else
279  return kFALSE;
280  break;
281  case 3:
282  if (sec==36 || sec==42 || sec==48 || sec==54 || sec==60)
283  return kTRUE;
284  else
285  return kFALSE;
286  break;
287  default :
288  {
289  cout<<"ERROR : Kein gueltiger Lasersector !"<<endl;
290  return kFALSE;
291  }
292  }
293  }
294  else if (whichftpc==1)
295  {
296  switch(whichsec)
297  {
298  case 0:
299  // all sectors
300  if (sec<31)
301  return kTRUE;
302  break;
303  case 1:
304  if (sec==2 || sec==8 || sec==14 || sec==20 || sec==26)
305  return kTRUE;
306  else
307  return kFALSE;
308  break;
309  case 2:
310  if (sec==4 || sec==10 || sec==16 || sec==22 || sec==28)
311  return kTRUE;
312  else
313  return kFALSE;
314  break;
315  case 3:
316  if (sec==6 || sec==12 || sec==18 || sec==24 || sec==30)
317  return kTRUE;
318  else
319  return kFALSE;
320  break;
321  default :
322  {
323  cout<<"ERROR : Kein gueltiger Lasersector !"<<endl;
324  return kFALSE;
325  }
326  }
327  }
328  else {
329  cout<<"ERROR : Keine FTPC gewaehlt !"<<endl;
330  return kFALSE;
331  }
332 }