StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
hits2cluster_all.C
1 // $Id: hits2cluster_all.C,v 1.1 2008/05/16 18:36:56 jcs Exp $
2 //
3 // $Log: hits2cluster_all.C,v $
4 // Revision 1.1 2008/05/16 18:36:56 jcs
5 // update FTPC calibration macros
6 //
7 
8 // plot clusters for all sectors of all rows of both FTPC West and East
9 // will only work if drawclhisto and/or drawvertexhisto activated in debug.ini file used to produce run*_laser_test.root file
10 
11 struct HIT
12 {
13  Float_t x,y,z;
14  Float_t rad,phi;
15  Float_t raderror,phierror;
16 };
17 
18 struct CLUSTER
19 {
20  Float_t timepos,padpos,timesigma,padsigma;
21  Float_t peakheight, charge;
22  Int_t timebin,pad;
23  Int_t padlength,timelength;
24  Int_t row,sec;
25  Int_t flag;
26  Int_t numpeaks;
27 };
28 
29 struct EVENT
30 {
31  Float_t run;
32  Int_t nevent;
33 };
34 
35 
36 void hits2cluster_all(TString eingabe,int evt)
37 {
38 
39  CLUSTER cluster;
40  HIT hit;
41  EVENT event;
42 
43  // plain Style
44  gROOT->Reset();
45  gStyle->SetTitleOffset(1.25);
46  gStyle->SetCanvasBorderMode(0);
47  gStyle->SetPadBorderMode(0);
48  gStyle->SetPadColor(0);
49  gStyle->SetCanvasColor(0);
50  gStyle->SetTitleColor(0);
51  gStyle->SetStatColor(0);
52  gStyle->SetPalette(1);
53  gStyle->SetOptStat(11);
54  gStyle->SetOptFit();
55 
56  Float_t fpad,ftime,fflag,frow, fsec;
57  Int_t maxentries;
58 
59  TString histoname;
60 
61  TCanvas *c1 = new TCanvas("c1","ps",200,10,700,500);
62  c1->Divide(2,1);
63 
64  cout<<"Macro cluster_hits..."<<endl;
65  TFile *f = new TFile(eingabe+".root");
66  eingabe +="_evt_";
67  eingabe +=evt;
68 
69  eingabe +="-h2cl.ps";
70  TPostScript *fps=new TPostScript(eingabe,112);
71 
72  // read in ntuple to get hit position and flag
73 
74  dtree=(TTree*) f->Get("cl");
75  bhit=dtree->GetBranch("hit");
76  bhit->SetAddress(&hit);
77  bcluster=dtree->GetBranch("cluster");
78  bcluster->SetAddress(&cluster);
79  bevent=dtree->GetBranch("event");
80  bevent->SetAddress(&event);
81 
82  topdir=(TDirectory*) f->Get("histograms");
83 
84  TString dirname="evt_";
85  dirname +=evt;
86  dirname +="_gain";
87 
88  //sprintf(dirname,"evt_%d",evt);
89 
90  histdir=(TDirectory*) topdir->Get(dirname);
91 
92  //topdir->cd();
93  //histdir->cd();
94 
95  int maxentries = (int)bcluster->GetEntries();
96 
97  TIter nextkey(histdir->GetListOfKeys());
98  TKey *key;
99  int i=1;
100 
101  char *oldname;
102 
103  while (key = (TKey*) nextkey())
104  {
105  if (key->GetName()!=oldname)
106  {
107  oldname=key->GetName();
108  if (i==1) fps->NewPage();
109  c1->cd(i);
110  TH2F *hist=(TH2F*) histdir->Get(key->GetName());
111  hist->DrawCopy("colz");
112 
113  TH2F *flag0=new TH2F("flag0","flag0",160,0,160,255,0,255);
114  flag0->SetMarkerStyle(20);flag0->SetMarkerSize(0.5);flag0->SetMarkerColor(1);
115  TH2F *flag1=new TH2F("flag1","flag1",160,0,160,255,0,255);
116  flag1->SetMarkerStyle(29);flag1->SetMarkerSize(0.5);flag1->SetMarkerColor(7);
117  TH2F *flag2=new TH2F("flag2","flag2",160,0,160,255,0,255);
118  flag2->SetMarkerStyle(21);flag2->SetMarkerSize(0.5);flag2->SetMarkerColor(3);
119  TH2F *flag3=new TH2F("flag3","flag3",160,0,160,255,0,255);
120  flag3->SetMarkerStyle(23);flag3->SetMarkerSize(0.5);flag3->SetMarkerColor(5);
121  TH2F *flag4=new TH2F("flag4","flag4",160,0,160,255,0,255);
122  flag4->SetMarkerStyle(29);flag4->SetMarkerSize(0.5);flag4->SetMarkerColor(3);
123  TH2F *flag5=new TH2F("flag5","flag5",160,0,160,255,0,255);
124  flag5->SetMarkerStyle(22);flag5->SetMarkerSize(0.5);flag5->SetMarkerColor(6);
125  TH2F *flag10=new TH2F("flag10","flag10",160,0,160,255,0,255);
126  flag10->SetMarkerStyle(20);flag10->SetMarkerSize(0.5);flag10->SetMarkerColor(2);
127  TH2F *flag11=new TH2F("flag11","flag11",160,0,160,255,0,255);
128  flag11->SetMarkerStyle(29);flag11->SetMarkerSize(0.5);flag11->SetMarkerColor(7);
129  TH2F *flag12=new TH2F("flag12","flag12",160,0,160,255,0,255);
130  flag12->SetMarkerStyle(29);flag12->SetMarkerSize(0.5);flag12->SetMarkerColor(3);
131  TH2F *flag13=new TH2F("flag13","flag13",160,0,160,255,0,255);
132  flag13->SetMarkerStyle(23);flag13->SetMarkerSize(0.5);flag13->SetMarkerColor(5);
133  TH2F *flag14=new TH2F("flag14","flag14",160,0,160,255,0,255);
134  flag14->SetMarkerStyle(29);flag14->SetMarkerSize(0.5);flag14->SetMarkerColor(3);
135  TH2F *flag15=new TH2F("flag15","flag15",160,0,160,255,0,255);
136  flag15->SetMarkerStyle(22);flag15->SetMarkerSize(0.5);flag15->SetMarkerColor(6);
137  TH2F *flag16=new TH2F("flag16","flag16",160,0,160,255,0,255);
138  flag16->SetMarkerStyle(28);flag16->SetMarkerSize(0.5);flag16->SetMarkerColor(8);
139 
140  //cout<<i<<" "<<key->GetName()<<endl;
141 
142  char *name;
143  name=key->GetName();
144 
145  for (int k=0;k<=maxentries;k++)
146  {
147  bevent->GetEntry(k);
148  bcluster->GetEntry(k);
149 
150  if (event.nevent==evt)
151  {
152  //cout<<event.nevent<<endl;
153 
154  if (cluster.sec==atoi(strchr(name, 'c')+1) && cluster.row==atoi(strchr(name, 'w')+1))
155  {
156  //cout<<cluster.sec<<" "<<cluster.row<<endl;
157  //cout<<"flag= "<<cluster.flag<<endl;
158  //cout<<cluster.padpos<<" "<<cluster.timepos<<endl;
159 
160  if (cluster.flag==0) {flag0->Fill(cluster.padpos,cluster.timepos);}
161 
162  if (cluster.flag==1) {flag1->Fill(cluster.padpos,cluster.timepos);}
163 
164  if (cluster.flag==2) {flag2->Fill(cluster.padpos,cluster.timepos);}
165 
166  if (cluster.flag==3) {flag3->Fill(cluster.padpos,cluster.timepos);}
167 
168  if (cluster.flag==4) {flag4->Fill(cluster.padpos,cluster.timepos);}
169 
170  if (cluster.flag==5) {flag5->Fill(cluster.padpos,cluster.timepos);}
171 
172  if (cluster.flag==10) {flag10->Fill(cluster.padpos,cluster.timepos);}
173 
174  if (cluster.flag==11) {flag11->Fill(cluster.padpos,cluster.timepos);}
175 
176  if (cluster.flag==12) {flag12->Fill(cluster.padpos,cluster.timepos);}
177 
178  if (cluster.flag==13) {flag13->Fill(cluster.padpos,cluster.timepos);}
179 
180  if (cluster.flag==14) {flag14->Fill(cluster.padpos,cluster.timepos);}
181 
182  if (cluster.flag==15) {flag15->Fill(cluster.padpos,cluster.timepos);}
183 
184  if (cluster.flag>=16) {flag16->Fill(cluster.padpos,cluster.timepos);}
185 
186 
187  }
188  }
189  }
190 
191  flag0->DrawCopy("same");
192  flag1->DrawCopy("same");
193  flag2->DrawCopy("same");
194  flag3->DrawCopy("same");
195  flag4->DrawCopy("same");
196  flag5->DrawCopy("same");
197 
198  flag10->DrawCopy("same");
199  flag11->DrawCopy("same");
200  flag12->DrawCopy("same");
201  flag13->DrawCopy("same");
202  flag14->DrawCopy("same");
203  flag15->DrawCopy("same");
204  flag16->DrawCopy("same");
205  TLegend *leg = new TLegend(0.46,0.72,0.80,0.86);
206  leg->SetFillColor(10);
207  leg->SetTextSize(0.03);
208  leg->AddEntry(flag0,"flag=0","P");
209  leg->AddEntry(flag10,"flag=10","P");
210  leg->AddEntry(flag11,"flag=1 & flag=11","P");
211  leg->AddEntry(flag2,"flag=2 & flag=12","P");
212  leg->AddEntry(flag3,"flag=3 & flag=13","P");
213  leg->AddEntry(flag4,"flag=4 & flag=14","P");
214  leg->AddEntry(flag15,"flag=5 & flag=15","P");
215  leg->AddEntry(flag16,"flag=6 & flag=16","P");
216  //leg->AddEntry(flag11,"flag==11","P");
217  //leg->AddEntry(flag14,"flag==14","P");
218  //leg->AddEntry(flag15,"flag==15","P");
219  //leg->AddEntry(flag16,"flag==16","P");
220  leg->Draw();
221  c1->Update();
222  flag0->Delete();
223  flag1->Delete();
224  flag2->Delete();
225  flag3->Delete();
226  flag4->Delete();
227  flag5->Delete();
228 
229  flag10->Delete();
230  flag11->Delete();
231  flag12->Delete();
232  flag13->Delete();
233  flag14->Delete();
234  flag15->Delete();
235  flag16->Delete();
236 
237  c1->Update();
238  i++;
239  if (i>2) i=1;
240  }
241  }
242  /*
243  TCanvas *c2 = new TCanvas("c2","legende",200,10,700,500);
244  c2->Divide(2,1);
245  TLegend *leg = new TLegend(0.46,0.72,0.72,0.86);
246  leg->SetTextSize(0.03);
247  leg->AddEntry(flag0,"flag==0","P");
248  leg->AddEntry(flag1,"flag==1","P");
249  leg->AddEntry(flag4,"flag==4","P");
250  leg->AddEntry(flag5,"flag==5","P");
251  leg->AddEntry(flag6,"flag==6","P");
252  leg->AddEntry(flag10,"flag==10","P");
253  leg->AddEntry(flag11,"flag==11","P");
254  leg->AddEntry(flag14,"flag==14","P");
255  leg->AddEntry(flag15,"flag==15","P");
256  leg->AddEntry(flag16,"flag==16","P");
257  fps->NewPage();
258  c2->cd(1);
259  leg->Draw();
260  c2->Update();
261  */
262  cout<<"Ps-file created !"<<endl;
263  fps->Close();
264  //f2->Write();
265  //f2->Close();
266  f->Close();
267  //leg->Delete();
268  c1->Delete();
269 }
270