StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
plSwap.C
1 // cat ps/pmt3* |ps2pdf - pmt3.pdf
2 
3 void doAll() {
4  for(int i=1;i<=24;i++) plSwap(i);
5 }
6 
7 plSwap(float n6=15, int set=20) {
8  int isBprs=1;
9  TString tscore="BTOW tower";
10 
11  char *fname="fixMe";
12  if(set==10) fname="sum-swapPnTn.hist.root";
13  if(set==12) fname="sum-swapTyPy.hist.root";
14 
15  if(set==20) fname="sumD43-70.hist.root";
16 
17 
18  fd=new TFile(fname); assert(fd->IsOpen());
19  printf("Work with %s\n", fd->GetName());
20  gStyle->SetOptStat(0);
21  gStyle->SetPalette(1,0);
22  gStyle->SetOptFit(1);
23 
24 
25  TH2F* hr= BPRS_c0;
26  // TH2F* hm=mipBprsAdc;
27  TH2F* hm=mipBprsTr;
28 
29  if(!isBprs) { // BTOW
30  hr= BTOW_c0;
31  TH2F* hm=mipBtowAdc;
32  }
33 
34  float y1=-20, y2=80;
35 
36  TH1I *idealMap=new TH1I("Map11", "ideal map 1:1",4800,0.5,4800.5);
37  for(int i=1;i<=4800;i++) idealMap->SetBinContent(i,i);
38  idealMap->SetLineStyle(3); idealMap->SetLineColor(kBlack);
39 
40 
41  float x1=n6*200-200;
42  float x2=n6*200;
43  char txt[100];
44  sprintf(txt,"%s softID=[%d,%d], with Jan's swaps",tscore.Data(),x1,x2);
45  x1-=10;
46  x2+=10;
47 
48  cM=new TCanvas(tscore+" MAP",tscore+" MAP",480,480);
49  hMap=(TH2F*)swapScan;
50  hMap->SetAxisRange(x1,x2,"x");
51  hMap->SetAxisRange(x1,x2,"y");
52  hMap ->Draw("colz");
53  hMap ->SetMinimum(20);
54  float yMax= hMap->GetMaximum();
55  if(yMax>20) hMap ->SetMaximum(0.8*yMax);
56  idealMap->Draw("same");
57  gPad->SetGrid();
58 
59  // return;
60  c=new TCanvas(txt,txt,1300,400);
61 
62  c->Divide(1,2);
63  c->cd(1); hr->Draw("colz"); gPad->SetLogz();
64  hr->SetAxisRange(x1,x2);
65  hr->SetAxisRange(y1,y2,"y");
66  if(isBprs) {
67  drawPMBoxes(x1,-22);
68  TString tt="Raw BPRS spectra, pedestal subtracted, Rory's & Jan's swaps used";
69  if(!isBprs)tt="Raw BTOW spectra, pedestal subtracted, Jan's swaps used";
70  tx=new TText(x1+80,y2+7,tt); tx->Draw(); tx->SetTextColor(55);
71  } else {
72  drawTowers(x1);
73  }
74  // return; // tmp
75  c->cd(2); hm->Draw("colz") ;
76  if(!isBprs) hm->Rebin2D(1,2);
77  hm->SetAxisRange(x1,x2);
78  hm->SetAxisRange(-10,50,"y");
79  hm->SetMaximum(50);
80  if(isBprs) {
81  drawPMBoxes(x1,-10.5 );
82  TString tt="BPRS spectra, gated with TPC MIP tracks, Rory's & Jan's swaps used";
83  if(!isBprs)tt="BTOW spectra, gated with TPC MIP tracks, Jan's swaps used";
84  tx=new TText(x1+82,53,tt); tx->Draw(); tx->SetTextColor(55);
85  } else {
86  drawTowers(x1);
87  }
88 
89  sprintf(txt,"ps/btowAdc%04d.ps",x1);
90  c->Print(txt);
91  return;
92 
93 }
94 
95 //================
96 void markPM1(float id1, float y11) {
97  float y=y11-10, yH=100;
98  for(int i=0;i<4;i++) {
99  float x1=id1+i*20;
100  float x2=x1+4;
101  ln=new TLine(x1,y+10,x2,y+10); ln->Draw();
102  ln->SetLineColor(kRed); ln->SetLineWidth(2.);
103  ln=new TLine(x1,y,x1,yH); ln->Draw();
104  ln->SetLineColor(kRed);
105  for(int j=0;j<5;j++) {
106  float d=j*4;
107  int iCol=kRed+j;
108 
109  ln=new TLine(x2+d,y,x2+d,yH); ln->Draw();
110  ln->SetLineColor(iCol); ln->SetLineStyle(3);
111  {
112  char c='F'+i;
113  TString tt=c; tt+="-";tt+=j+1;
114  tx=new TText(x1+.5+d,y+4,tt); tx->Draw(); tx->SetTextColor(iCol);
115  tx->SetTextSize(0.04);
116  }
117  }
118  }
119 }
120 
121 //================
122 drawTowers(int x1) {
123  float y1=-32, y2=90;
124  float x0=(x1-1)/20;
125  x0=0.5+x0*20;
126  for(int k=0;k<10;k++) {
127  float x=x0+k*20;
128  ln=new TLine(x,y1,x,y2); ln->Draw(); ln->SetLineColor(kMagenta);
129  x=x+10;
130  ln=new TLine(x,y1,x,y2); ln->Draw(); ln->SetLineColor(kMagenta); ln->SetLineStyle(2);
131  }
132 }
133 //================
134 drawPMBoxes(int x1,float y11) {
135  float y1=-32, y2=90;
136  if(x1<2400) {
137  int zoff=339;
138  for(int k=0;k<30;k++) {
139  int zid=zoff+k*80;
140  float id=zid%2400 +1+0.5;
141  int zpmt=24;
142  int pmtid=1+(zpmt+30-k)%30;
143  // printf("k=%d id=%.1f pmt=%d\n",k,id,pmtid);
144  ln=new TLine(id,y1,id,y2);
145  ln->Draw(); ln->SetLineColor(kMagenta);// ln->SetLineWidth(2.);
146  TString tt="PMT-"; tt+=pmtid;
147  tx=new TText(id+30,y2-8,tt); tx->Draw(); tx->SetTextColor(kMagenta);
148  markPM1(id,y11);
149  }
150  } else {
151  int zoff=2420;
152  for(int k=0;k<30;k++) {
153  int zid=zoff+k*80;
154  float id=zid%2400 +2400+0.5;
155  int zpmt=32;
156  int pmtid=31+(zpmt+k)%30;
157  // printf("k=%d id=%.1f pmt=%d\n",k,id,pmtid);
158  ln=new TLine(id,y1,id,y2);
159  ln->Draw(); ln->SetLineColor(kMagenta);// ln->SetLineWidth(2.);
160  TString tt="PMT-"; tt+=pmtid;
161  tx=new TText(id+30,y2-8,tt); tx->Draw(); tx->SetTextColor(kMagenta);
162  markPM1(id,y11);
163  }
164  }
165  }
166 
167