Public Member Functions | List of all members
dune::CheckGeometry Class Reference
Inheritance diagram for dune::CheckGeometry:
art::EDAnalyzer art::detail::Analyzer art::detail::LegacyModule art::Observer art::ModuleBase

Public Member Functions

 CheckGeometry (fhicl::ParameterSet const &p)
 
 CheckGeometry (CheckGeometry const &)=delete
 
 CheckGeometry (CheckGeometry &&)=delete
 
CheckGeometryoperator= (CheckGeometry const &)=delete
 
CheckGeometryoperator= (CheckGeometry &&)=delete
 
void analyze (art::Event const &e) override
 
void reconfigure (fhicl::ParameterSet const &p)
 
- Public Member Functions inherited from art::EDAnalyzer
 EDAnalyzer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 EDAnalyzer (Table< Config > const &config)
 
std::string workerType () const
 
- Public Member Functions inherited from art::detail::Analyzer
virtual ~Analyzer () noexcept
 
 Analyzer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 Analyzer (Table< Config > const &config)
 
void doBeginJob (SharedResources const &resources)
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
- Public Member Functions inherited from art::Observer
 ~Observer () noexcept
 
 Observer (Observer const &)=delete
 
 Observer (Observer &&)=delete
 
Observeroperator= (Observer const &)=delete
 
Observeroperator= (Observer &&)=delete
 
void registerProducts (ProductDescriptions &, ModuleDescription const &)
 
void fillDescriptions (ModuleDescription const &)
 
fhicl::ParameterSetID selectorConfig () const
 
- Public Member Functions inherited from art::ModuleBase
virtual ~ModuleBase () noexcept
 
 ModuleBase ()
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Additional Inherited Members

- Public Types inherited from art::EDAnalyzer
using WorkerType = WorkerT< EDAnalyzer >
 
using ModuleType = EDAnalyzer
 
- Protected Member Functions inherited from art::Observer
std::string const & processName () const
 
bool wantAllEvents () const noexcept
 
bool wantEvent (ScheduleID id, Event const &e) const
 
Handle< TriggerResultsgetTriggerResults (Event const &e) const
 
 Observer (fhicl::ParameterSet const &config)
 
 Observer (std::vector< std::string > const &select_paths, std::vector< std::string > const &reject_paths, fhicl::ParameterSet const &config)
 
- Protected Member Functions inherited from art::ModuleBase
ConsumesCollectorconsumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Detailed Description

Definition at line 38 of file CheckGeometry_module.cc.

Constructor & Destructor Documentation

dune::CheckGeometry::CheckGeometry ( fhicl::ParameterSet const &  p)
explicit

Definition at line 63 of file CheckGeometry_module.cc.

64  :
65  EDAnalyzer(p)
66 {
67  reconfigure(p);
68 }
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.h:25
void reconfigure(fhicl::ParameterSet const &p)
p
Definition: test.py:223
dune::CheckGeometry::CheckGeometry ( CheckGeometry const &  )
delete
dune::CheckGeometry::CheckGeometry ( CheckGeometry &&  )
delete

Member Function Documentation

void dune::CheckGeometry::analyze ( art::Event const &  e)
overridevirtual

Implements art::EDAnalyzer.

Definition at line 70 of file CheckGeometry_module.cc.

71 {
72 
74 
75  //std::cout<<"channel = "<<geo->PlaneWireToChannel(0,600,1)<<std::endl;
76 
77  TCanvas *can = new TCanvas("c1","c1");
78  can->cd();
79  std::vector<TBox*> TPCBox;
80  std::vector<TLine*> Wires;
81 
82  double minx = 1e9;
83  double maxx = -1e9;
84  double miny = 1e9;
85  double maxy = -1e9;
86  double minz = 1e9;
87  double maxz = -1e9;
88 
89  int nwires = 0;
90  std::vector<int> nwires_tpc(geo->NTPC());
91  for (size_t i = 0; i<geo->NTPC(); ++i) nwires_tpc[i] = 0;
92  for (size_t t = 0; t<geo->NTPC(); ++t){
93  //if (t%2==0) continue;
94  double local[3] = {0.,0.,0.};
95  double world[3] = {0.,0.,0.};
96  const geo::TPCGeo &tpc = geo->TPC(t);
97  tpc.LocalToWorld(local,world);
98  if (minx>world[0]-tpc.ActiveHalfWidth())
99  minx = world[0]-tpc.ActiveHalfWidth();
100  if (maxx<world[0]+tpc.ActiveHalfWidth())
101  maxx = world[0]+tpc.ActiveHalfWidth();
102  if (miny>world[1]-tpc.ActiveHalfHeight())
103  miny = world[1]-tpc.ActiveHalfHeight();
104  if (maxy<world[1]+tpc.ActiveHalfHeight())
105  maxy = world[1]+tpc.ActiveHalfHeight();
106  if (minz>world[2]-tpc.ActiveLength()/2.)
107  minz = world[2]-tpc.ActiveLength()/2.;
108  if (maxz<world[2]+tpc.ActiveLength()/2.)
109  maxz = world[2]+tpc.ActiveLength()/2.;
110 // std::cout<<t<<" "<<world[0]-tpc.ActiveHalfWidth()
111 // <<" "<<world[0]+tpc.ActiveHalfWidth()
112 // <<" "<<world[1]-tpc.ActiveHalfHeight()
113 // <<" "<<world[1]+tpc.ActiveHalfHeight()
114 // <<" "<<world[2]-tpc.ActiveLength()/2.
115 // <<" "<<world[2]+tpc.ActiveLength()/2.<<std::endl;
116 
117  TPCBox.push_back(new TBox(world[2]-tpc.ActiveLength()/2.,
118  world[1]-tpc.ActiveHalfHeight(),
119  world[2]+tpc.ActiveLength()/2.,
120  world[1]+tpc.ActiveHalfHeight()));
121  TPCBox.back()->SetFillStyle(0);
122  TPCBox.back()->SetLineStyle(2);
123  TPCBox.back()->SetLineWidth(2);
124  TPCBox.back()->SetLineColor(16);
125 
126  for (size_t p = 0; p<geo->Nplanes(t);++p){
127  for (size_t w = 0; w<geo->Nwires(p,t); ++w){
128  ++nwires;
129  ++nwires_tpc[t];
130  double xyz0[3];
131  double xyz1[3];
132  unsigned int c = 0;
133 // if ((t==7&&p==0&&w==192)||
134 // (t==7&&p==1&&w==112)||
135 // (t==7&&p==2&&w==0)){
136 // if (true){
137  if ((t==2||t==6||t==10)&&p==0&&w%10==0){
138  geo->WireEndPoints(c,t,p,w,xyz0,xyz1);
139  Wires.push_back(new TLine(xyz0[2],xyz0[1],xyz1[2],xyz1[1]));
140  }
141  //std::cout<<t<<" "<<p<<" "<<w<<" "<<xyz0[0]<<" "<<xyz0[1]<<" "<<xyz0[2]<<std::endl;
142  }
143  }
144  }
145 
146  TH2F *frame = new TH2F("frame",";z (cm);y (cm)",100,minz,maxz,100,miny,maxy);
147  frame->SetStats(0);
148  frame->Draw();
149  for (auto box: TPCBox) box->Draw();
150  for (auto wire: Wires) wire->Draw();
151  can->Print("wires.pdf");
152  std::cout<<"N wires = "<<nwires<<std::endl;
153  for (size_t i = 0; i<geo->NTPC(); ++i){
154  std::cout<<"TPC "<<i<<" has "<<nwires_tpc[i]<<" wires"<<std::endl;
155  }
156 
157  //CRT
158  std::vector<TBox*> CRTBox0;
159  std::vector<TBox*> CRTBox1;
160  std::vector<std::vector<TBox*>> CRTStrips(2);
161  std::vector<int> modules0;
162  std::vector<int> modules1;
163  std::vector<TText *> text0;
164  std::vector<TText *> text1;
165  std::vector<double> module_x(32);
166  std::vector<double> module_y(32);
167  std::vector<double> module_z(32);
168  std::vector<double> pixel_x(32);
169  std::vector<double> pixel_y(32);
170  std::vector<double> pixel_z(32);
171  for (unsigned int i = 0; i < geo->NAuxDets(); ++i){
172  auto& auxdet = geo->AuxDet(i);
173  double xyz[3];
174  auxdet.GetCenter(xyz);
175  //std::cout<<"Aux "<<i<<" "<<xyz[0]<<" "<<xyz[1]<<" "<<xyz[2]<<" "<<auxdet.HalfWidth1()<<" "<<auxdet.HalfHeight()<<" "<<auxdet.Length()/2<<std::endl;
176  double auxdet0[3] = {-auxdet.HalfWidth1(), auxdet.HalfHeight(), -auxdet.Length()/2};
177  double world0[3];
178  auxdet.LocalToWorld(auxdet0, world0);
179  double auxdet1[3] = {auxdet.HalfWidth1(), auxdet.HalfHeight(), auxdet.Length()/2};
180  double world1[3];
181  auxdet.LocalToWorld(auxdet1, world1);
182  module_x[i] = (world0[0]+world1[0])/2;
183  module_y[i] = (world0[1]+world1[1])/2;
184  module_z[i] = (world0[2]+world1[2])/2;
185  std::cout<<"CRT module "<<i<<" x = "<<module_x[i]<<" y = "<<module_y[i]<<" z = "<<module_z[i]<<std::endl;
186  if (xyz[2] < 0){ //front
187  CRTBox0.push_back(new TBox(world0[0],world0[1],world1[0],world1[1]));
188  CRTBox0.back()->SetFillStyle(0);
189  //CRTBox0.back()->SetLineStyle(i/8+1);
190  CRTBox0.back()->SetLineColor(i%8+1);
191  if (i%8+1==5){
192  CRTBox0.back()->SetLineColor(kOrange);
193  }
194  CRTBox0.back()->SetLineWidth(2);
195  modules0.push_back(i);
196  text0.push_back(new TText((world0[0]+world1[0])/2,(world0[1]+world1[1])/2,Form("%d",i)));
197  text0.back()->SetTextColor(i%8+1);
198  if (i%8+1==5){
199  text0.back()->SetTextColor(kOrange);
200  }
201 
202  }
203  else{
204  CRTBox1.push_back(new TBox(world0[0],world0[1],world1[0],world1[1]));
205  CRTBox1.back()->SetFillStyle(0);
206  //CRTBox1.back()->SetLineStyle(i/8+1);
207  CRTBox1.back()->SetLineColor(i%8+1);
208  if (i%8+1==5){
209  CRTBox1.back()->SetLineColor(kOrange);
210  }
211  CRTBox1.back()->SetLineWidth(2);
212  modules1.push_back(i);
213  text1.push_back(new TText((world0[0]+world1[0])/2,(world0[1]+world1[1])/2,Form("%d",i)));
214  text1.back()->SetTextColor(i%8+1);
215  if (i%8+1==5){
216  text1.back()->SetTextColor(kOrange);
217  }
218  }
219  if (i==0){
220  //std::cout<<"Aux "<<i<<" has "<<auxdet.NSensitiveVolume()<<std::endl;
221  }
222  }
223 
224  //Get the pixel map
225  std::vector< std::pair <int,int> > vect;
226  vect.push_back( std::make_pair(1,2));
227  vect.push_back( std::make_pair(0,2));
228  vect.push_back( std::make_pair(15,13));
229  vect.push_back( std::make_pair(14,13));
230  vect.push_back( std::make_pair(14,12));
231  vect.push_back( std::make_pair(9,11));
232  vect.push_back( std::make_pair(9,10));
233  vect.push_back( std::make_pair(8,10));
234  vect.push_back( std::make_pair(7,5));
235  vect.push_back( std::make_pair(6,5));
236  vect.push_back( std::make_pair(6,4));
237  vect.push_back( std::make_pair(1,3));
238  vect.push_back( std::make_pair(0,3));
239  vect.push_back( std::make_pair(15,12));
240  vect.push_back( std::make_pair(8,11));
241  vect.push_back( std::make_pair(7,4));
242  vect.push_back( std::make_pair(17,18));
243  vect.push_back( std::make_pair(16,18));
244  vect.push_back( std::make_pair(31,29));
245  vect.push_back( std::make_pair(30,29));
246  vect.push_back( std::make_pair(30,28));
247  vect.push_back( std::make_pair(25,27));
248  vect.push_back( std::make_pair(25,26));
249  vect.push_back( std::make_pair(24,26));
250  vect.push_back( std::make_pair(23,21));
251  vect.push_back( std::make_pair(22,21));
252  vect.push_back( std::make_pair(22,20));
253  vect.push_back( std::make_pair(17,19));
254  vect.push_back( std::make_pair(16,19));
255  vect.push_back( std::make_pair(31,28));
256  vect.push_back( std::make_pair(24,27));
257  vect.push_back( std::make_pair(23,20));
258  //module map
259  std::vector<size_t> fChannelMap;
260  fChannelMap.push_back(24);
261  fChannelMap.push_back(25);
262  fChannelMap.push_back(30);
263  fChannelMap.push_back(18);
264  fChannelMap.push_back(15);
265  fChannelMap.push_back(7);
266  fChannelMap.push_back(13);
267  fChannelMap.push_back(12);
268  fChannelMap.push_back(11);
269  fChannelMap.push_back(10);
270  fChannelMap.push_back(6);
271  fChannelMap.push_back(14);
272  fChannelMap.push_back(19);
273  fChannelMap.push_back(31);
274  fChannelMap.push_back(26);
275  fChannelMap.push_back(27);
276  fChannelMap.push_back(22);
277  fChannelMap.push_back(23);
278  fChannelMap.push_back(29);
279  fChannelMap.push_back(17);
280  fChannelMap.push_back(8);
281  fChannelMap.push_back(0);
282  fChannelMap.push_back(3);
283  fChannelMap.push_back(2);
284  fChannelMap.push_back(5);
285  fChannelMap.push_back(4);
286  fChannelMap.push_back(1);
287  fChannelMap.push_back(9);
288  fChannelMap.push_back(16);
289  fChannelMap.push_back(28);
290  fChannelMap.push_back(20);
291  fChannelMap.push_back(21);
292 
293  for (size_t i = 0; i<32; ++i){
294  int module[2];
295  double x[2];
296  double y[2];
297  double z[2];
298  double x0[2];
299  double x1[2];
300 // double y0[2];
301 // double y1[2];
302  module[0] = fChannelMap[vect[i].first];
303  module[1] = fChannelMap[vect[i].second];
304  for (size_t j = 0; j<2; ++j){
305  auto& auxdet = geo->AuxDet(module[j]);
306  double xyz[3];
307  auxdet.GetCenter(xyz);
308  x[j] = xyz[0];
309  y[j] = xyz[1];
310  z[j] = xyz[2];
311  double auxdet0[3] = {-auxdet.HalfWidth1(), auxdet.HalfHeight(), -auxdet.Length()/2};
312  double world0[3];
313  auxdet.LocalToWorld(auxdet0, world0);
314  double auxdet1[3] = {auxdet.HalfWidth1(), auxdet.HalfHeight(), auxdet.Length()/2};
315  double world1[3];
316  auxdet.LocalToWorld(auxdet1, world1);
317  x0[j] = world0[0];
318  x1[j] = world1[0];
319 // y0[j] = world0[1];
320 // y1[j] = world1[1];
321  }
322  if (std::abs(x0[0]-x1[0])<std::abs(x0[1]-x1[1])){
323  pixel_x[i] = x[0];
324  pixel_y[i] = y[1];
325  }
326  else{
327  pixel_x[i] = x[1];
328  pixel_y[i] = y[0];
329  }
330  pixel_z[i] = (z[0]+z[1])/2;
331  }
332 
333  TLatex tex;
334  tex.SetTextSize(0.02);
335 
336  TH2F *frcrt0 = new TH2F("frcrt0","Upstream;x(cm);y(cm)",100,-300, 600, 100, -100, 650);
337  TH2F *frcrt1 = new TH2F("frcrt1","Downstream;x(cm);y(cm)",100,-400, 450, 100, -200, 600);
338  frcrt0->SetStats(0);
339  frcrt1->SetStats(0);
340  TCanvas *cancrt = new TCanvas("cancrt","cancrt",1600,800);
341  cancrt->Divide(2,1);
342  cancrt->cd(1);
343  frcrt0->DrawCopy();
344  TLegend *leg0 = new TLegend(0.7,0.1,0.9,0.9);
345  leg0->SetFillStyle(0);
346  for (size_t i = 0; i< CRTBox0.size(); ++i){
347  CRTBox0[i]->Draw();
348  text0[i]->Draw();
349  leg0->AddEntry(CRTBox0[i], Form("Module %d",modules0[i]), "l");
350  }
351  //leg0->Draw();
352  for (int i = 0; i<16; ++i){
353  //tex.DrawLatex(pixel_x[i], pixel_y[i], Form("CH %d",i));
354  }
355  TLatex tt;
356  tt.SetTextSize(0.02);
357  for (unsigned int i = 0; i < geo->NAuxDets(); ++i){
358  auto& auxdet = geo->AuxDet(i);
359  double xyz[3];
360  auxdet.GetCenter(xyz);
361  if (xyz[2] < 0){ //front
362  if (auxdet.HalfWidth1()>auxdet.HalfHeight()){//horizontal
363  for (int j = 0; j<1; ++j){
364  auto& auxdetsen = auxdet.SensitiveVolume(j);
365  //std::cout<<i<<" "<<j<<" "<<auxdetsen.HalfWidth1()<<" "<<auxdetsen.HalfHeight()<<" "<<auxdetsen.Length()/2<<std::endl;
366  double auxdetsen0[3] = {0,0,auxdetsen.Length()/2-20};
367  double world0[3];
368  auxdetsen.LocalToWorld(auxdetsen0,world0);
369  //std::cout<<i<<" "<<j<<" "<<world0[0]<<" "<<world0[1]<<std::endl;
370  tt.SetTextColor(i%8+1);
371  tt.DrawLatex(world0[0], world0[1], Form("%d",j));
372  }
373  }
374  }
375  }
376 
377  cancrt->cd(2);
378  frcrt1->DrawCopy();
379  TLegend *leg1 = new TLegend(0.7,0.1,0.9,0.9);
380  leg1->SetFillStyle(0);
381  for (size_t i = 0; i< CRTBox1.size(); ++i){
382  CRTBox1[i]->Draw();
383  text1[i]->Draw();
384  leg1->AddEntry(CRTBox1[i], Form("Module %d",modules1[i]), "l");
385  }
386  //leg1->Draw();
387  for (int i = 16; i<32; ++i){
388  //tex.DrawLatex(pixel_x[i], pixel_y[i], Form("CH %d",i));
389  }
390 
391  for (unsigned int i = 0; i < geo->NAuxDets(); ++i){
392  auto& auxdet = geo->AuxDet(i);
393  double xyz[3];
394  auxdet.GetCenter(xyz);
395  if (xyz[2] > 0){ //front
396  for (int j = 0; j<1; ++j){
397  auto& auxdetsen = auxdet.SensitiveVolume(j);
398  //std::cout<<i<<" "<<j<<" "<<auxdetsen.HalfWidth1()<<" "<<auxdetsen.HalfHeight()<<" "<<auxdetsen.Length()/2<<std::endl;
399  double auxdetsen0[3] = {0,0,auxdetsen.Length()/2-20};
400  double world0[3];
401  auxdetsen.LocalToWorld(auxdetsen0,world0);
402  //std::cout<<i<<" "<<j<<" "<<world0[0]<<" "<<world0[1]<<std::endl;
403  tt.SetTextColor(i%8+1);
404  tt.DrawLatex(world0[0], world0[1], Form("%d",j));
405  }
406  }
407  }
408 
409  tt.SetTextColor(1);
410  for (int i = 0; i<2; ++i){
411  auto& auxdet = geo->AuxDet(i*2);
412  for (size_t j = 0; j<auxdet.NSensitiveVolume(); ++j){
413  auto& auxdetsen = auxdet.SensitiveVolume(j);
414  double world0[3] = {0};
415  double world1[3] = {0};
416  double auxdet0[3] = {-auxdetsen.HalfWidth1(),
417  -auxdetsen.HalfHeight(),
418  0};
419  double auxdet1[3] = {auxdetsen.HalfWidth1(),
420  auxdetsen.HalfHeight(),
421  0};
422  auxdetsen.LocalToWorld(auxdet0, world0);
423  auxdetsen.LocalToWorld(auxdet1, world1);
424 // std::cout<<world0[0]<<" "<<world0[1]<<" "<<world0[2]<<std::endl;
425 // std::cout<<world1[0]<<" "<<world1[1]<<" "<<world1[2]<<std::endl;
426  if (i==0){
427  CRTStrips[i].push_back(new TBox(world0[1], world0[2], world1[1], world1[2]));
428  }
429  else {
430  CRTStrips[i].push_back(new TBox(world0[0], world0[2], world1[0], world1[2]));
431  }
432  CRTStrips[i].back()->SetFillStyle(0);
433  CRTStrips[i].back()->SetLineWidth(2);
434  }
435  }
436  //std::cout<<CRTStrips[0].size()<<" "<<CRTStrips[1].size()<<std::endl;
437  TH2D *frstp[2];
438  TCanvas *cstp[2];
439  for (int i = 0; i<2; ++i){
440  cstp[i] = new TCanvas(Form("cstp_%d",i), Form("cstp_%d",i), 1000,500);
441  double minx = 1e10;
442  double maxx = -1e10;
443  double miny = 1e10;
444  double maxy = -1e10;
445  for (size_t j = 0; j<CRTStrips[i].size(); ++j){
446  if (minx>CRTStrips[i][j]->GetX1()) minx = CRTStrips[i][j]->GetX1();
447  if (minx>CRTStrips[i][j]->GetX2()) minx = CRTStrips[i][j]->GetX2();
448  if (maxx<CRTStrips[i][j]->GetX1()) maxx = CRTStrips[i][j]->GetX1();
449  if (maxx<CRTStrips[i][j]->GetX2()) maxx = CRTStrips[i][j]->GetX2();
450  if (miny>CRTStrips[i][j]->GetY1()) miny = CRTStrips[i][j]->GetY1();
451  if (miny>CRTStrips[i][j]->GetY2()) miny = CRTStrips[i][j]->GetY2();
452  if (maxy<CRTStrips[i][j]->GetY1()) maxy = CRTStrips[i][j]->GetY1();
453  if (maxy<CRTStrips[i][j]->GetY2()) maxy = CRTStrips[i][j]->GetY2();
454  }
455  frstp[i] = new TH2D(Form("frstp_%d",i),Form("frstp_%d",i),100,minx-10,maxx+10,100,miny-1,maxy+1);
456  frstp[i]->SetStats(0);
457  if (i==0) frstp[i]->SetTitle("Horizontal module (offline module 0);y(cm);z(cm)");
458  else frstp[i]->SetTitle("Vertical module (offline module 2);x(cm);z(cm)");
459  frstp[i]->Draw();
460  for (size_t j = 0; j<CRTStrips[i].size(); ++j){
461  CRTStrips[i][j]->Draw();
462  }
463  auto& auxdet = geo->AuxDet(i*2);
464  for (size_t j = 0; j<auxdet.NSensitiveVolume(); ++j){
465  auto& auxdetsen = auxdet.SensitiveVolume(j);
466  double xyz[3];
467  auxdetsen.GetCenter(xyz);
468  if (i==0) tt.DrawLatex(xyz[1]-0.5, xyz[2], Form("%d",int(j)));
469  else tt.DrawLatex(xyz[0]-0.5, xyz[2], Form("%d",int(j)));
470  }
471  cstp[i]->Print(Form("cstp_%d.png",i));
472  }
473  std::ofstream outfile("pixel.txt");
474  for (int i = 0; i<32; ++i){
475  outfile<<pixel_x[i]<<" "<<pixel_y[i]<<" "<<pixel_z[i]<<std::endl;
476  }
477  outfile.close();
478 
479  cancrt->Print("crt.pdf");
480  cancrt->Print("crt.png");
481 
482  //convert channel number to t/p/w
483  outfile.clear();
484  outfile.open("channelmap.txt");
485  for (size_t i = 0; i<geo->Nchannels(); ++i){
486  auto wire = geo->ChannelToWire(i)[0];
487  outfile<<i<<" "<<wire.TPC<<" "<<wire.Plane<<" "<<wire.Wire<<std::endl;
488  }
489 
490 }
double ActiveHalfHeight() const
Half height (associated with y coordinate) of active TPC volume [cm].
Definition: TPCGeo.h:99
AuxDetSensitiveGeo const & SensitiveVolume(size_t sv) const
Definition: AuxDetGeo.h:171
Geometry information for a single TPC.
Definition: TPCGeo.h:38
std::vector< geo::WireID > ChannelToWire(raw::ChannelID_t const channel) const
Returns a list of wires connected to the specified TPC channel.
unsigned int Nwires(unsigned int p, unsigned int tpc=0, unsigned int cstat=0) const
Returns the total number of wires in the specified plane.
unsigned int Nchannels() const
Returns the number of TPC readout channels in the detector.
Definition: type_traits.h:61
T abs(T value)
unsigned int Nplanes(unsigned int tpc=0, unsigned int cstat=0) const
Returns the total number of wire planes in the specified TPC.
double ActiveHalfWidth() const
Half width (associated with x coordinate) of active TPC volume [cm].
Definition: TPCGeo.h:95
p
Definition: test.py:223
AuxDetGeo const & AuxDet(unsigned int const ad=0) const
Returns the specified auxiliary detector.
double ActiveLength() const
Length (associated with z coordinate) of active TPC volume [cm].
Definition: TPCGeo.h:103
unsigned int NTPC(unsigned int cstat=0) const
Returns the total number of TPCs in the specified cryostat.
void WireEndPoints(geo::WireID const &wireid, double *xyzStart, double *xyzEnd) const
Fills two arrays with the coordinates of the wire end points.
list x
Definition: train.py:276
TPCGeo const & TPC(unsigned int const tpc=0, unsigned int const cstat=0) const
Returns the specified TPC.
LArSoft geometry interface.
Definition: ChannelGeo.h:16
void LocalToWorld(const double *tpc, double *world) const
Transform point from local TPC frame to world frame.
Definition: TPCGeo.h:563
void GetCenter(double *xyz, double localz=0.0) const
Return the center position of an AuxDet.
QTextStream & endl(QTextStream &s)
unsigned int NAuxDets() const
Returns the number of auxiliary detectors.
void GetCenter(double *xyz, double localz=0.0) const
Return the center position of an AuxDet.
Definition: AuxDetGeo.cxx:62
CheckGeometry& dune::CheckGeometry::operator= ( CheckGeometry const &  )
delete
CheckGeometry& dune::CheckGeometry::operator= ( CheckGeometry &&  )
delete
void dune::CheckGeometry::reconfigure ( fhicl::ParameterSet const &  p)

Definition at line 492 of file CheckGeometry_module.cc.

493 {
494  // Implementation of optional member function here.
495 }

The documentation for this class was generated from the following file: