EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
EIC-IR1-XX-v01h.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file EIC-IR1-XX-v01h.C
1 
2 {
3  auto eic = new EicToyModel();
4 
5  // Shift IP if needed; define canvas width; request eta=0 line in the drawing; set name;
6  eic->ip(0.0 * etm::cm)->width(1200)->AddEtaLine(0.0)->SetName("EIC-IR1-XX-v01h");
7  eic->ir(1020.0 * etm::cm, 420.0*etm::cm);
8  // Define acceptance ranges and the vacuum chamber design;
9  eic->acceptance(-4.2, -1.0, 1.1, 4.2);
10  eic->SetAzimuthalSegmentation(12);
11  eic->DefineVacuumChamber(new vc2020_03_20());
12  //eic->DrawIP6boundaries();
13  //eic->UseDetectorHighlighting();
14 
15  // Vertex tracker;
16  {
17  auto vtx = eic->vtx(); vtx->offset(0.0 * etm::cm);
18 
19  vtx->add("Si Tracker",20 * etm::cm);//->highlight(1.0);
20  }
21 
22  // Barrel;
23  {
24  auto mid = eic->mid(); mid->offset( 20 * etm::cm);
25 
26  mid->add("Si Tracker",20 * etm::cm);
27  //mid->gap( 8 * etm::cm);
28  for(unsigned iq=0; iq<4; iq++) {
29  //mid->gap( 10 * etm::cm);
30  mid->add("MPGD", 10 * etm::cm);
31  if (iq != 3)
32  mid->gap( (28 * etm::cm)/3.);
33  } //for iq
34  mid->add("DIRC", 12 * etm::cm)->trim(1.0, 0.3);//->highlight();
35  mid->add("EmCal", 40 * etm::cm);//->highlight();
36  mid->add("Cryostat", 50 * etm::cm)->trim(1.0, 0.6);
37  mid->add("HCal", 120 * etm::cm)->trim(0.0, 1.00);//->highlight();;
38  }
39 
40  // Hadron-going endcap;
41  {
42  auto fwd = eic->fwd(); fwd->offset(100 * etm::cm);
43 
44  for(unsigned iq=0; iq<3; iq++) {
45  fwd->gap( 5 * etm::cm);
46  fwd->add("MPGD", 10 * etm::cm)->brick();//->highlight();
47  } //for iq
48  fwd->marker();
49 
50  fwd->add("Fwd RICH", 150 * etm::cm)->trim(1.0, 1.0);//->highlight();
51  for(unsigned nn=0; nn<2; nn++)
52  fwd->add("TRD", 15 * etm::cm)->brick();//->highlight();
53 
54  fwd->add("TOF", 10 * etm::cm)->brick();
55  fwd->add("EmCal", 40 * etm::cm);//->highlight();
56  fwd->add("HCal", 120 * etm::cm);//->highlight();
57  }
58 
59  // Electron-going endcap;
60  {
61  auto bck = eic->bck(); bck->offset(100 * etm::cm);
62 
63  for(unsigned iq=0; iq<3; iq++) {
64  bck->gap( 5 * etm::cm);
65  bck->add("MPGD", 10 * etm::cm)->brick();//->highlight();
66  } //for iq
67 
68  bck->add("Cherenkov", 40 * etm::cm);//->highlight();
69  bck->marker();
70  bck->add("TOF", 10 * etm::cm)->brick();
71  bck->add("EmCal", 60 * etm::cm)->trim(1.0, 0.0);//->highlight();
72  bck->add("HCal", 105 * etm::cm);//->highlight();
73  }
74 
75  // Declare eta boundary configuration;
76  {
77  eic->vtx()->get("Si Tracker") ->stretch(eic->bck()->get("TOF"));
78  eic->vtx()->get("Si Tracker") ->stretch(eic->fwd()->get("Fwd RICH"));
79 
80  eic->mid()->get("Si Tracker") ->stretch(eic->fwd()->get("MPGD"));
81  eic->mid()->get("Si Tracker") ->stretch(eic->bck()->get("MPGD"));
82  eic->mid()->get ("MPGD", 0)->stretch(eic->fwd()->get("MPGD", 0));
83  eic->mid()->get ("MPGD", 0)->stretch(eic->bck()->get("MPGD", 0));
84  for(unsigned iq=0; iq<3; iq++) {
85  eic->mid()->get("MPGD", iq+1)->stretch(eic->bck()->get("MPGD", iq),10 * etm::cm);
86  eic->mid()->get("MPGD", iq+1)->stretch(eic->fwd()->get("MPGD", iq),10 * etm::cm);
87  } //for iq
88  //eic->fwd()->get ("MPGD", 2)->stretch(eic->mid()->get("MPGD", 3));
89  eic->mid()->get("HCal") ->stretch(eic->bck()->get("HCal"));
90 
91  eic->bck()->get("EmCal") ->stretch(eic->mid()->get("DIRC"));
92 
93  eic->mid()->get("EmCal") ->stretch(eic->bck()->get("HCal"), -25 * etm::cm);
94 
95  eic->bck()->get("HCal") ->stretch(eic->mid()->get("HCal"), 90 * etm::cm);
96  eic->mid()->get("HCal") ->stretch(eic->fwd()->get("HCal"));
97  eic->fwd()->get("HCal") ->stretch(eic->mid()->get("HCal"), 120 * etm::cm);
98  eic->fwd()->get("TRD", 0) ->stretch(eic->mid()->get("HCal"), 10 * etm::cm);
99  eic->fwd()->get("TRD", 1) ->stretch(eic->mid()->get("HCal"), 20 * etm::cm);
100  eic->fwd()->get("TOF") ->stretch(eic->mid()->get("HCal"), 30 * etm::cm);
101  eic->fwd()->get("EmCal") ->stretch(eic->mid()->get("HCal"), 40 * etm::cm);
102  }
103 
104  // Beautify picture a little bit;
105  eic->ApplyStandardTrimming();
106 
107  // Draw horizontal cross cut view; write the .root file out;
108  eic->hdraw();
109  eic->write();
110  //eic->Export("EIC-IR1-XX-v01h.stp");
111 }