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