]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // Interface to the HIGZ package for the GEANT drawing package // | |
4 | // // | |
5 | //Begin_Html | |
6 | /* | |
1439f98e | 7 | <img src="picts/THIGZClass.gif"> |
fe4da5cc | 8 | */ |
9 | //End_Html | |
10 | // // | |
11 | // // | |
12 | /////////////////////////////////////////////////////////////////////////////// | |
13 | ||
14 | #include "TROOT.h" | |
15 | #include "THIGZ.h" | |
16 | #include "TGeant3.h" | |
17 | #include "TGraph.h" | |
18 | #include "TColor.h" | |
19 | #include "TLine.h" | |
20 | #include "TPolyLine.h" | |
21 | #include "TPolyMarker.h" | |
22 | #include "TPaveLabel.h" | |
23 | #include "TText.h" | |
24 | #include "Rtypes.h" | |
25 | #include "AliCallf77.h" | |
26 | #include "TPaveTree.h" | |
27 | #include <string.h> | |
28 | #include <ctype.h> | |
29 | ||
30 | #ifndef WIN32 | |
31 | # define hplint hplint_ | |
32 | # define hplend hplend_ | |
33 | # define hplfra hplfra_ | |
34 | # define igmeta igmeta_ | |
35 | # define iselnt iselnt_ | |
36 | # define igiwty igiwty_ | |
37 | # define igqwk igqwk_ | |
38 | ||
39 | # define iacwk iacwk_ | |
40 | # define iclrwk iclrwk_ | |
41 | # define iclwk iclwk_ | |
42 | # define idawk idawk_ | |
43 | # define ifa ifa_ | |
44 | # define igbox igbox_ | |
45 | # define ightor ightor_ | |
46 | # define igpave igpave_ | |
47 | # define igpid igpid_ | |
48 | # define igq igq_ | |
49 | # define igrng igrng_ | |
50 | # define igsa igsa_ | |
51 | # define igset igset_ | |
52 | # define igterm igterm_ | |
53 | # define iopwk iopwk_ | |
54 | # define ipl ipl_ | |
55 | # define ipm ipm_ | |
56 | # define irqlc irqlc_ | |
57 | # define iscr iscr_ | |
58 | # define isfaci isfaci_ | |
59 | # define isfais isfais_ | |
60 | # define isln isln_ | |
61 | # define ismk ismk_ | |
62 | # define islwsc islwsc_ | |
63 | # define isplci isplci_ | |
64 | # define ispmci ispmci_ | |
65 | # define istxci istxci_ | |
66 | # define isvp isvp_ | |
67 | # define iswn iswn_ | |
68 | # define itx itx_ | |
69 | ||
70 | #else | |
71 | # define iacwk IACWK | |
72 | # define iclrwk ICLRWK | |
73 | # define iclwk ICLWK | |
74 | # define idawk IDAWK | |
75 | # define ifa IFA | |
76 | # define igbox IGBOX | |
77 | # define ightor IGHTOR | |
78 | # define igpave IGPAVE | |
79 | # define igpid IGPID | |
80 | # define igq IGQ | |
81 | # define igrng IGRNG | |
82 | # define igsa IGSA | |
83 | # define igset IGSET | |
84 | # define igterm IGTERM | |
85 | # define iopwk IOPWK | |
86 | # define ipl IPL | |
87 | # define ipm IPM | |
88 | # define irqlc IRQLC | |
89 | # define iscr ISCR | |
90 | # define isfaci ISFACI | |
91 | # define isfais ISFAIS | |
92 | # define isln ISLN | |
93 | # define ismk ISMK | |
94 | # define islwsc ISLWSC | |
95 | # define isplci ISPLCI | |
96 | # define ispmci ISPMCI | |
97 | # define istxci ISTXCI | |
98 | # define isvp ISVP | |
99 | # define iswn ISWN | |
100 | # define itx ITX | |
101 | #endif | |
102 | ||
103 | static Int_t npid = 0; | |
104 | static char cpar[1200]; | |
cfce8870 | 105 | static TGeant3 *geant3=(TGeant3*)gMC; |
fe4da5cc | 106 | |
107 | THIGZ *higz = 0; | |
108 | ||
109 | ClassImp(THIGZ) | |
110 | ||
111 | //_______________________________________________________________ | |
112 | THIGZ::THIGZ() | |
113 | :TCanvas() | |
114 | { | |
115 | } | |
116 | ||
117 | //_______________________________________________________________ | |
118 | THIGZ::THIGZ(Int_t size) | |
119 | :TCanvas("higz","higz",size,size) | |
120 | { | |
121 | higz = this; | |
122 | Reset(); | |
123 | SetFillColor(10); | |
124 | } | |
125 | //_______________________________________________________________ | |
126 | THIGZ::~THIGZ() | |
127 | { | |
128 | } | |
129 | //_______________________________________________________________ | |
130 | Float_t THIGZ::Get(const char *name) | |
131 | { | |
132 | if (!strcmp(name,"FAIS")) return fFAIS; | |
133 | if (!strcmp(name,"FASI")) return fFASI; | |
134 | if (!strcmp(name,"LTYP")) return fLTYP; | |
135 | if (!strcmp(name,"BASL")) return fBASL; | |
136 | if (!strcmp(name,"LWID")) return fLWID; | |
137 | if (!strcmp(name,"MTYP")) return fMTYP; | |
138 | if (!strcmp(name,"MSCF")) return fMSCF; | |
139 | if (!strcmp(name,"PLCI")) return fPLCI; | |
140 | if (!strcmp(name,"PMCI")) return fPMCI; | |
141 | if (!strcmp(name,"FACI")) return fFACI; | |
142 | if (!strcmp(name,"TXCI")) return fTXCI; | |
143 | if (!strcmp(name,"TXAL")) return fTXAL; | |
144 | if (!strcmp(name,"CHHE")) return fCHHE*fY2; | |
145 | if (!strcmp(name,"TANG")) return fTANG; | |
146 | if (!strcmp(name,"TXFP")) return fTXFP; | |
147 | if (!strcmp(name,"BORD")) return fBORD; | |
148 | if (!strcmp(name,"NCOL")) return fNCOL; | |
149 | if (!strcmp(name,"DRMD")) return fDRMD; | |
150 | if (!strcmp(name,"SYNC")) return fSYNC; | |
151 | if (!strcmp(name,"CLIP")) return fCLIP; | |
152 | if (!strcmp(name,"2BUF")) return f2BUF; | |
153 | return -1; | |
154 | } | |
155 | //_______________________________________________________________ | |
156 | void THIGZ::Set(const char *name, Float_t val) | |
157 | { | |
158 | if (!strcmp(name,"FAIS")) {fFAIS = Int_t(val); return;} | |
159 | if (!strcmp(name,"FASI")) {fFASI = Int_t(val); return;} | |
160 | if (!strcmp(name,"LTYP")) {fLTYP = Int_t(val); return;} | |
161 | if (!strcmp(name,"BASL")) {fBASL = val; return;} | |
162 | if (!strcmp(name,"LWID")) {fLWID = val; if (val <= 0) fLWID=1; return;} | |
163 | if (!strcmp(name,"MTYP")) {fMTYP = Int_t(val); return;} | |
164 | if (!strcmp(name,"MSCF")) {fMSCF = val; return;} | |
165 | if (!strcmp(name,"PLCI")) {fPLCI = Int_t(val); return;} | |
166 | if (!strcmp(name,"PMCI")) {fPMCI = Int_t(val); return;} | |
167 | if (!strcmp(name,"FACI")) {fFACI = Int_t(val)%1000; return;} | |
168 | if (!strcmp(name,"TXCI")) {fTXCI = Int_t(val); return;} | |
169 | if (!strcmp(name,"TXAL")) { | |
170 | Int_t align = Int_t(val); | |
171 | Int_t aligh = align/10; | |
172 | Int_t aligv = align%10; | |
173 | Int_t ah = aligh; | |
174 | Int_t av = aligv; | |
175 | if (aligh == 0) ah = 1; | |
176 | if (aligv == 1 || aligh == 2) av = 3; | |
177 | if (aligv == 3) av = 2; | |
178 | if (aligv == 0) av = 1; | |
179 | fTXAL = 10*ah + av; | |
180 | return; | |
181 | } | |
182 | if (!strcmp(name,"CHHE")) {fCHHE = val/fY2; if (fCHHE <= 0) fCHHE = 0.03; return;} | |
183 | if (!strcmp(name,"TANG")) {fTANG = val; return;} | |
184 | if (!strcmp(name,"TXFP")) {fTXFP = Int_t(val); return;} | |
185 | if (!strcmp(name,"BORD")) {fBORD = Int_t(val); return;} | |
186 | if (!strcmp(name,"NCOL")) {fNCOL = Int_t(val); return;} | |
187 | if (!strcmp(name,"DRMD")) {fDRMD = Int_t(val); return;} | |
188 | if (!strcmp(name,"SYNC")) {fSYNC = Int_t(val); return;} | |
189 | if (!strcmp(name,"CLIP")) {fCLIP = Int_t(val); return;} | |
190 | if (!strcmp(name,"2BUF")) {f2BUF = Int_t(val); return;} | |
191 | } | |
192 | //_______________________________________________________________ | |
193 | void THIGZ::Reset(Option_t *) | |
194 | { | |
195 | fFAIS = 0; | |
196 | fFASI = 1; | |
197 | fLTYP = 1; | |
198 | fBASL = 1; | |
199 | fLWID = 1; | |
200 | fMTYP = 1; | |
201 | fMSCF = 1; | |
202 | fPLCI = 1; | |
203 | fPMCI = 1; | |
204 | fFACI = 1; | |
205 | fTXCI = 1; | |
206 | fTXAL = 12; | |
207 | fCHHE = 0.03; | |
208 | fTANG = 0; | |
209 | fTXFP = 62; | |
210 | fBORD = 0; | |
211 | fNCOL = 8; | |
212 | fDRMD = 1; | |
213 | fSYNC = 1; | |
214 | fCLIP = 0; | |
215 | f2BUF = 0; | |
216 | fPID = 0; | |
217 | fPname= ""; | |
218 | } | |
219 | //___________________________________________ | |
220 | void THIGZ::Gsatt(const char *name, const char *att, Int_t val) | |
221 | { | |
222 | // NAME Volume name | |
223 | // IOPT Name of the attribute to be set | |
224 | // IVAL Value to which the attribute is to be set | |
225 | // | |
226 | // name= "*" stands for all the volumes. | |
227 | // iopt can be chosen among the following : | |
228 | // see TGeant3::Gsatt for more details | |
229 | // | |
230 | ||
cfce8870 | 231 | gMC->Gsatt(name,att,val); |
fe4da5cc | 232 | } |
233 | ||
234 | //___________________________________________ | |
235 | void THIGZ::Gdopt(const char *name,const char *value) | |
236 | { | |
237 | // NAME Option name | |
238 | // VALUE Option value | |
239 | // | |
240 | // To set/modify the drawing options. | |
241 | // see TGeant3::Gdopt for more details | |
242 | // | |
cfce8870 | 243 | gMC->Gdopt(name,value); |
fe4da5cc | 244 | } |
245 | ||
246 | ||
247 | //___________________________________________ | |
248 | void THIGZ::Gdraw(const char *name,Float_t theta, Float_t phi, Float_t psi,Float_t u0,Float_t v0,Float_t ul,Float_t vl) | |
249 | { | |
250 | // NAME Volume name | |
251 | // + | |
252 | // THETA Viewing angle theta (for 3D projection) | |
253 | // PHI Viewing angle phi (for 3D projection) | |
254 | // PSI Viewing angle psi (for 2D rotation) | |
255 | // U0 U-coord. (horizontal) of volume origin | |
256 | // V0 V-coord. (vertical) of volume origin | |
257 | // SU Scale factor for U-coord. | |
258 | // SV Scale factor for V-coord. | |
259 | // see TGeant3::Gdraw for more details | |
260 | // | |
261 | ||
cfce8870 | 262 | gMC->Gdraw(name,theta,phi,psi,u0,v0,ul,vl); |
fe4da5cc | 263 | } |
264 | ||
265 | ||
266 | //___________________________________________ | |
267 | void THIGZ::Gdrawc(const char *name,Int_t axis, Float_t cut,Float_t u0,Float_t v0,Float_t ul,Float_t vl) | |
268 | { | |
269 | // NAME Volume name | |
270 | // CAXIS Axis value | |
271 | // CUTVAL Cut plane distance from the origin along the axis | |
272 | // + | |
273 | // U0 U-coord. (horizontal) of volume origin | |
274 | // V0 V-coord. (vertical) of volume origin | |
275 | // SU Scale factor for U-coord. | |
276 | // SV Scale factor for V-coord. | |
277 | // see TGeant3::Gdrawc for more details | |
278 | // | |
279 | ||
fe4da5cc | 280 | geant3->Gdrawc(name,axis,cut,u0,v0,ul,vl); |
281 | } | |
282 | ||
283 | ||
284 | //___________________________________________ | |
285 | void THIGZ::Gdspec(const char *name) | |
286 | { | |
287 | // NAME Volume name | |
288 | // | |
289 | // Shows 3 views of the volume (two cut-views and a 3D view), together with | |
290 | // its geometrical specifications. The 3D drawing will | |
291 | // be performed according the current values of the options HIDE and | |
292 | // SHAD and according the current CVOL clipping parameters for that | |
293 | // volume. | |
294 | // see TGeant3::Gdspec for more details | |
295 | // | |
296 | ||
fe4da5cc | 297 | geant3->Gdspec(name); |
298 | } | |
299 | ||
300 | ||
301 | //___________________________________________ | |
302 | void THIGZ::Gdtree(const char *name,Int_t levmax, Int_t isel) | |
303 | { | |
304 | // NAME Volume name | |
305 | // LEVMAX Depth level | |
306 | // ISELT Options | |
307 | // | |
308 | // This function draws the logical tree, | |
309 | // Each volume in the tree is represented by a TPaveTree object. | |
310 | // Double-clicking on a TPaveTree draws the specs of the corresponding volume. | |
311 | // Use TPaveTree pop-up menu to select: | |
312 | // - drawing specs | |
313 | // - drawing tree | |
314 | // - drawing tree of parent | |
315 | // | |
316 | ||
fe4da5cc | 317 | geant3->Gdtree(name,levmax,isel); |
318 | } | |
319 | ||
320 | ||
321 | //______________________________________________________________________________ | |
322 | void THIGZ::SetBOMB(Float_t boom) | |
323 | { | |
324 | // BOOM : Exploding factor for volumes position | |
325 | // | |
326 | // To 'explode' the detector. If BOOM is positive (values smaller | |
327 | // than 1. are suggested, but any value is possible) | |
328 | // all the volumes are shifted by a distance | |
329 | // proportional to BOOM along the direction between their centre | |
330 | // and the origin of the MARS; the volumes which are symmetric | |
331 | // with respect to this origin are simply not shown. | |
332 | // BOOM equal to 0 resets the normal mode. | |
333 | // A negative (greater than -1.) value of | |
334 | // BOOM will cause an 'implosion'; for even lower values of BOOM | |
335 | // the volumes' positions will be reflected respect to the origin. | |
336 | // This command can be useful to improve the 3D effect for very | |
337 | // complex detectors. The following commands will make explode the | |
338 | // detector: | |
339 | ||
fe4da5cc | 340 | geant3->SetBOMB(boom); |
341 | } | |
342 | ||
343 | //_______________________________________________________________ | |
344 | extern "C" void type_of_call iacwk(Int_t &) | |
345 | { | |
346 | // printf("iacwk called,wid=%d\n",wid); | |
347 | } | |
348 | ||
349 | //_______________________________________________________________ | |
350 | extern "C" void type_of_call iclrwk(Int_t &,Int_t &) | |
351 | { | |
352 | // printf("iclrwk called\n"); | |
353 | higz->Clear(); | |
354 | } | |
355 | ||
356 | //_______________________________________________________________ | |
357 | extern "C" void type_of_call iclwk(Int_t &,Int_t &) | |
358 | { | |
359 | // printf("iclwk called\n"); | |
360 | ||
361 | } | |
362 | ||
363 | //_______________________________________________________________ | |
364 | extern "C" void type_of_call idawk(Int_t &) | |
365 | { | |
366 | // printf("idawk called\n"); | |
367 | } | |
368 | ||
369 | //_______________________________________________________________ | |
370 | extern "C" void type_of_call ifa(Int_t &n,Float_t *x, Float_t *y) | |
371 | { | |
372 | // printf("ifa called, n=%d, pname=%s, pid=%d, x1=%f, y1=%f,x2=%f, y2=%f, x3=%f, y3=%f\n",n,higz->fPname.Data(),higz->fPID,x[0],y[0],x[1],y[1],x[2],y[2]); | |
373 | TGraph *gr = new TGraph(n,x,y); | |
374 | gr->SetFillColor(higz->fFACI); | |
375 | gr->Draw("f"); | |
376 | } | |
377 | ||
378 | //_______________________________________________________________ | |
379 | extern "C" void type_of_call igbox(Float_t &x1,Float_t &x2,Float_t &y1,Float_t &y2) | |
380 | { | |
381 | printf("igbox called, x1=%f, y1=%f, x2=%f, y2=%f\n",x1,y1,x2,y2); | |
382 | TBox *box = new TBox(x1,y1,x2,y2); | |
383 | box->SetLineColor(higz->fPLCI); | |
384 | box->SetFillColor(higz->fFACI); | |
385 | box->SetFillStyle(higz->fFASI); | |
386 | box->Draw(); | |
387 | } | |
388 | ||
389 | //_______________________________________________________________ | |
390 | extern "C" void type_of_call ightor(Float_t &h,Float_t &l,Float_t &s,Float_t &r,Float_t &g,Float_t &b) | |
391 | { | |
392 | // printf("ightor called\n"); | |
393 | TColor *col1 = gROOT->GetColor(1); | |
394 | if (col1) col1->HLStoRGB(h,l,s,r,g,b); | |
395 | } | |
396 | ||
397 | //_______________________________________________________________ | |
398 | extern "C" void type_of_call igpave(Float_t &x1,Float_t &x2,Float_t &yy1,Float_t &yy2,Float_t &,Int_t &isbox,Int_t &isfram,const char *, const Int_t) | |
399 | { | |
400 | char text[5]; | |
401 | strncpy(text,(char*)&higz->fPID,4); | |
402 | text[4] = 0; | |
403 | Float_t y1 = yy1; | |
404 | Float_t y2 = yy2; | |
405 | if (y1 > y2) { y1 = yy2; y2 = yy1;} | |
406 | Float_t y = 0.5*(y1+y2); | |
407 | Float_t dymax = 0.06*(higz->GetY2()-higz->GetY1()); | |
408 | Float_t dymin = -higz->PixeltoY(12); | |
409 | if (y2-y1 > dymax) { | |
410 | y1 = y - 0.5*dymax; | |
411 | y2 = y + 0.5*dymax; | |
412 | } | |
413 | if (y2-y1 < dymin) { | |
414 | y1 = y - 0.5*dymin; | |
415 | y2 = y + 0.5*dymin; | |
416 | } | |
417 | TPaveTree *pt = new TPaveTree(x1,y1,x2,y2,text); | |
418 | pt->SetTextColor(5); | |
419 | pt->SetFillColor(isbox%1000); | |
420 | pt->SetLineColor(isfram%1000); | |
421 | pt->Draw(); | |
422 | // printf("igpave called, text=%s, Pname=%s, x1=%f, y1=%f, x2=%f, y2=%f, isbox=%d, isfram=%d\n",text,higz->fPname.Data(),x1,y1,x2,y2,isbox,isfram); | |
423 | } | |
424 | ||
425 | //_______________________________________________________________ | |
426 | #ifndef WIN32 | |
427 | extern "C" void type_of_call igpid(Int_t &,const char *name,Int_t &pid,const char *, const Int_t l1, const Int_t) | |
428 | #else | |
429 | extern "C" void type_of_call igpid(Int_t &,const char *name,const Int_t l1, Int_t &pid,const char *, const Int_t) | |
430 | #endif | |
431 | { | |
432 | npid++; | |
433 | // if(npid&100 == 0) printf("igpid called, npid=%d\n",npid); | |
434 | strncpy(cpar,name,l1); cpar[l1] = 0; | |
435 | higz->fPname = cpar; | |
436 | higz->fPID = pid; | |
437 | ||
438 | // char text[5]; | |
439 | // strncpy(text,(char*)&higz->fPID,4); | |
440 | // text[4] = 0; | |
441 | // printf("igpid called, level=%d, name=%s, pid=%d, cpid=%s\n",level,cpar,pid,text); | |
442 | } | |
443 | ||
444 | //_______________________________________________________________ | |
445 | #ifndef WIN32 | |
446 | extern "C" void type_of_call igq(const char *name,Float_t &rval, const Int_t l1) | |
447 | #else | |
448 | extern "C" void type_of_call igq(const char *name,const Int_t l1, Float_t &rval) | |
449 | #endif | |
450 | { | |
451 | strncpy(cpar,name,l1); cpar[l1] = 0; | |
452 | // printf("igq called, name=%s\n",cpar); | |
453 | rval = higz->Get(cpar); | |
454 | } | |
455 | ||
456 | //_______________________________________________________________ | |
457 | extern "C" void type_of_call igrng(Float_t &xsize,Float_t &ysize) | |
458 | { | |
459 | // printf("igrng called, xsize=%f, ysize=%f\n",xsize,ysize); | |
460 | higz->Range(0,0,xsize,ysize); | |
461 | } | |
462 | ||
463 | //_______________________________________________________________ | |
464 | extern "C" void type_of_call igsa(Int_t &) | |
465 | { | |
466 | // printf("igsa called, iwk=%d\n",iwk); | |
467 | } | |
468 | ||
469 | //_______________________________________________________________ | |
470 | #ifndef WIN32 | |
471 | extern "C" void type_of_call igset(const char *name,Float_t &rval, const Int_t l1) | |
472 | #else | |
473 | extern "C" void type_of_call igset(const char *name, const Int_t l1,Float_t &rval) | |
474 | #endif | |
475 | { | |
476 | strncpy(cpar,name,l1); cpar[l1] = 0; | |
477 | // printf("igset called, name=%s, rval=%f\n",cpar,rval); | |
478 | higz->Set(cpar,rval); | |
479 | } | |
480 | ||
481 | //_______________________________________________________________ | |
482 | extern "C" void type_of_call igterm() | |
483 | { | |
484 | printf("igterm called\n"); | |
485 | } | |
486 | ||
487 | //_______________________________________________________________ | |
488 | extern "C" void type_of_call iopwk(Int_t &iwkid,Int_t &iconid,Int_t &iwtypi) | |
489 | { | |
490 | printf("iopwk called, iwkid=%d, iconid=%d, iwtypi=%d\n",iwkid,iconid,iwtypi); | |
491 | } | |
492 | ||
493 | //_______________________________________________________________ | |
494 | extern "C" void type_of_call ipl(Int_t &n,Float_t *x,Float_t *y) | |
495 | { | |
496 | // printf("ipl called, n=%d, x[0]=%f,y[0]=%f, x[1]=%f, y[1]=%f\n",n,x[0],y[0],x[1],y[1]); | |
497 | if (n <= 2) { | |
498 | TLine *l = new TLine(x[0],y[0],x[1],y[1]); | |
499 | l->SetLineColor(higz->fPLCI); | |
500 | l->SetLineStyle(higz->fLTYP); | |
501 | l->SetLineWidth(Short_t(higz->fLWID)); | |
502 | l->Draw(); | |
503 | } else { | |
504 | TPolyLine *pl = new TPolyLine(n,x,y); | |
505 | pl->SetLineColor(higz->fPLCI); | |
506 | pl->SetLineStyle(higz->fLTYP); | |
507 | pl->SetLineWidth(Short_t(higz->fLWID)); | |
508 | pl->Draw(); | |
509 | } | |
510 | } | |
511 | ||
512 | //_______________________________________________________________ | |
513 | extern "C" void type_of_call ipm(Int_t &n,Float_t *x,Float_t *y) | |
514 | { | |
515 | printf("ipm called, n=%d\n",n); | |
516 | TPolyMarker *pm = new TPolyMarker(n,x,y); | |
517 | pm->SetMarkerColor(higz->fPMCI); | |
518 | pm->SetMarkerStyle(higz->fMTYP); | |
519 | pm->SetMarkerSize(higz->fMSCF); | |
520 | pm->Draw(); | |
521 | } | |
522 | ||
523 | //_______________________________________________________________ | |
524 | extern "C" void type_of_call irqlc(Int_t&, Int_t&, Int_t&, Int_t&, Float_t&, Float_t&) | |
525 | ||
526 | { | |
527 | printf("irqlc called\n"); | |
528 | } | |
529 | ||
530 | //_______________________________________________________________ | |
531 | extern "C" void type_of_call iscr(Int_t &,Int_t &ici,Float_t &r,Float_t &g,Float_t &b) | |
532 | { | |
533 | // printf("iscr called, ici=%d, r=%f, g=%f, b=%f\n",ici,r,g,b); | |
534 | Int_t color = ici; | |
535 | // if (color > 10) color += 35; | |
536 | TColor *col = gROOT->GetColor(color); | |
537 | if (!col) { | |
538 | col = new TColor(color,r,g,b); | |
539 | return; | |
540 | } else { | |
541 | col->SetRGB(r,g,b); | |
542 | } | |
543 | } | |
544 | ||
545 | //_______________________________________________________________ | |
546 | extern "C" void type_of_call isfaci(Int_t &col) | |
547 | { | |
548 | // printf("isfaci called, col=%d\n",col); | |
549 | Int_t color = col%1000; | |
550 | // if (color > 10) color += 35; | |
551 | higz->fFACI = color; | |
552 | } | |
553 | ||
554 | //_______________________________________________________________ | |
555 | extern "C" void type_of_call isfais(Int_t &is) | |
556 | { | |
557 | // printf("isfais called, is=%d\n",is); | |
558 | higz->fFAIS = is; | |
559 | } | |
560 | ||
561 | //_______________________________________________________________ | |
562 | extern "C" void type_of_call isln(Int_t &ln) | |
563 | { | |
564 | // printf("isln called, ln=%d\n",ln); | |
565 | higz->fLTYP = ln; | |
566 | } | |
567 | ||
568 | //_______________________________________________________________ | |
569 | extern "C" void type_of_call ismk(Int_t &mk) | |
570 | { | |
571 | // printf("ismk called, mk=%d\n",mk); | |
572 | higz->fMTYP = mk; | |
573 | } | |
574 | ||
575 | //_______________________________________________________________ | |
576 | extern "C" void type_of_call islwsc(Float_t &wl) | |
577 | { | |
578 | // printf("islwsc called, wl=%f\n",wl); | |
579 | higz->fLWID = wl; | |
580 | } | |
581 | ||
582 | //_______________________________________________________________ | |
583 | extern "C" void type_of_call isplci(Int_t &col) | |
584 | { | |
585 | // printf("isplci called, col=%d\n",col); | |
586 | Int_t color = col%1000; | |
587 | // if (color > 10) color += 35; | |
588 | higz->fPLCI = color; | |
589 | } | |
590 | ||
591 | //_______________________________________________________________ | |
592 | extern "C" void type_of_call ispmci(Int_t &col) | |
593 | { | |
594 | // printf("ispmci called, col=%d\n",col); | |
595 | Int_t color = col%1000; | |
596 | // if (color > 10) color += 35; | |
597 | higz->fPMCI = color; | |
598 | } | |
599 | ||
600 | //_______________________________________________________________ | |
601 | extern "C" void type_of_call istxci(Int_t &col) | |
602 | { | |
603 | // printf("istxci called, col=%d\n",col); | |
604 | Int_t color = col%1000; | |
605 | // if (color > 10) color += 35; | |
606 | higz->fTXCI = color; | |
607 | } | |
608 | ||
609 | //_______________________________________________________________ | |
610 | extern "C" void type_of_call isvp(Int_t &,Float_t &,Float_t &,Float_t &,Float_t &) | |
611 | { | |
612 | // printf("isvp called, nt=%d, x1=%f, y1=%f, x2=%f, y2=%f\n",nt,x1,y1,x2,y2); | |
613 | } | |
614 | ||
615 | //_______________________________________________________________ | |
616 | extern "C" void type_of_call iswn(Int_t &,Float_t &x1,Float_t &x2,Float_t &y1,Float_t &y2) | |
617 | ||
618 | { | |
619 | // printf("iswn called, nt=%d, x1=%f, y1=%f, x2=%f, y2=%f\n",nt,x1,y1,x2,y2); | |
620 | higz->Range(x1,y1,x2,y2); | |
621 | } | |
622 | ||
623 | //_______________________________________________________________ | |
624 | extern "C" void type_of_call itx(Float_t &x,Float_t &y,const char *ptext, const Int_t l1p) | |
625 | { | |
626 | if (higz->fPname == "Tree") return; | |
627 | Int_t l1=l1p; | |
628 | strncpy(cpar,ptext,l1); cpar[l1] = 0; | |
629 | //printf("itx called, x=%f, y=%f, text=%s, l1=%d\n",x,y,cpar,l1); | |
630 | while(l1) { | |
631 | if (cpar[l1-1] != ' ' && cpar[l1-1] != '$') break; | |
632 | l1--; | |
633 | cpar[l1] = 0; | |
634 | } | |
635 | char *small = strstr(cpar,"<"); | |
636 | while(small && *small) { | |
637 | small[0] = tolower(small[1]); | |
638 | small++; | |
639 | } | |
640 | TText *text = new TText(x,y,cpar); | |
641 | text->SetTextColor(higz->fTXCI); | |
642 | text->SetTextSize(higz->fCHHE); | |
643 | text->SetTextFont(higz->fTXFP); | |
644 | text->SetTextAlign(higz->fTXAL); | |
645 | text->SetTextAngle(higz->fTANG); | |
646 | text->Draw(); | |
647 | } | |
648 | ||
649 | //_______________________________________________________________ | |
650 | extern "C" void type_of_call hplint(Int_t &) | |
651 | { | |
652 | printf("hplint called\n"); | |
653 | new THIGZ(600); | |
654 | } | |
655 | ||
656 | //_______________________________________________________________ | |
657 | extern "C" void type_of_call hplend() | |
658 | { | |
659 | printf("hplend called\n"); | |
660 | } | |
661 | ||
662 | //_______________________________________________________________ | |
663 | extern "C" void type_of_call hplfra(Float_t &x1,Float_t &x2,Float_t &y1, Float_t &y2,const char *, const Int_t) | |
664 | { | |
665 | // printf("hplfra called, x1=%f, y1=%f, x2=%f, y2=%f\n",x1,y1,x2,y2); | |
666 | higz->Clear(); | |
667 | higz->Range(x1,y1,x2,y2); | |
668 | } | |
669 | ||
670 | //_______________________________________________________________ | |
671 | extern "C" void type_of_call igmeta(Int_t &, Int_t &) | |
672 | { | |
673 | printf("igmeta called\n"); | |
674 | } | |
675 | ||
676 | //_______________________________________________________________ | |
677 | extern "C" void type_of_call iselnt(Int_t &) | |
678 | { | |
679 | // printf("iselnt called, nt=%d\n",nt); | |
680 | } | |
681 | ||
682 | //_______________________________________________________________ | |
683 | extern "C" Int_t type_of_call igiwty(Int_t &) | |
684 | { | |
685 | // printf("igiwty called, wid=%d\n",wid); | |
686 | return 1; | |
687 | } | |
688 | ||
689 | //_______________________________________________________________ | |
690 | extern "C" void type_of_call igqwk(Int_t &, const char *name, Float_t &rval, const Int_t l1) | |
691 | { | |
692 | strncpy(cpar,name,l1); cpar[l1] = 0; | |
693 | // printf("igqwk called, wid=%d, pname=%s\n",wid,cpar); | |
694 | rval = higz->Get(cpar); | |
695 | } | |
696 |