/[PAMELA software]/tracker/flight/PamelaViewer/src/TrkViewer.cpp
ViewVC logotype

Annotation of /tracker/flight/PamelaViewer/src/TrkViewer.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Tue Jan 20 10:29:57 2009 UTC (15 years, 10 months ago) by pam-fi
Branch: MAIN
Branch point for: tracker
Initial revision

1 pam-fi 1.1 /**
2     * \file TrkViewer.cpp
3     * \author Elena Vannuccini
4     */
5     #include <TrkViewer.h>
6     // (mechanical) z-coordinate of the tracker planes
7     #define ZTRK6 -22.23
8     #define ZTRK5 -13.32
9     #define ZTRK4 -4.42
10     #define ZTRK3 4.48
11     #define ZTRK2 13.38
12     #define ZTRK1 22.28
13     // (mechanical) x/y-coordinates of magnet cavity
14     #define XTRKL -8.1
15     #define XTRKR 8.1
16     #define YTRKL -6.6
17     #define YTRKR 6.6
18     // (approximate) position of dead area among sensors
19     #define DX1 -2.7
20     #define DX2 2.7
21     #define DY -0.2
22    
23     #define VCOL 18//29 // volume color
24     #define PCOL 1 // plane color
25     #define CCOL 15 // column color
26    
27     #define HTCOL 2 // track-hit color
28     #define HSCOL 11 // singlet-hit color
29    
30     #define TCCOL 40 // color of track-candidates
31    
32     /**
33     * Tracker volume (x/y/top projections) constructor
34     */
35     GTrkVolume::GTrkVolume(){
36    
37     cavity_l = new TBox(XTRKL,ZTRK6,XTRKR,ZTRK1);
38     cavity_l->SetFillColor(VCOL);
39     plane_l[0] = new TLine(XTRKL,ZTRK1,XTRKR,ZTRK1);
40     plane_l[1] = new TLine(XTRKL,ZTRK2,XTRKR,ZTRK2);
41     plane_l[2] = new TLine(XTRKL,ZTRK3,XTRKR,ZTRK3);
42     plane_l[3] = new TLine(XTRKL,ZTRK4,XTRKR,ZTRK4);
43     plane_l[4] = new TLine(XTRKL,ZTRK5,XTRKR,ZTRK5);
44     plane_l[5] = new TLine(XTRKL,ZTRK6,XTRKR,ZTRK6);
45     for(Int_t ip=1; ip<=6;ip++)plane_l[ip-1]->SetLineColor(PCOL);
46    
47     cavity_r = new TBox(YTRKL,ZTRK6,YTRKR,ZTRK1);
48     cavity_r->SetFillColor(VCOL);
49     plane_r[0] = new TLine(YTRKL,ZTRK1,YTRKR,ZTRK1);
50     plane_r[1] = new TLine(YTRKL,ZTRK2,YTRKR,ZTRK2);
51     plane_r[2] = new TLine(YTRKL,ZTRK3,YTRKR,ZTRK3);
52     plane_r[3] = new TLine(YTRKL,ZTRK4,YTRKR,ZTRK4);
53     plane_r[4] = new TLine(YTRKL,ZTRK5,YTRKR,ZTRK5);
54     plane_r[5] = new TLine(YTRKL,ZTRK6,YTRKR,ZTRK6);
55     for(Int_t ip=1; ip<=6;ip++)plane_r[ip-1]->SetLineColor(PCOL);
56    
57     cavity_c = new TBox(XTRKL,YTRKL,XTRKR,YTRKR);
58     cavity_c->SetFillColor(VCOL);
59    
60     column_l[0] = new TLine(DX1,ZTRK6,DX1,ZTRK1);
61     column_l[1] = new TLine(DX2,ZTRK6,DX2,ZTRK1);
62     column_l[0]->SetLineColor(CCOL);
63     column_l[1]->SetLineColor(CCOL);
64     column_l[0]->SetLineStyle(2);
65     column_l[1]->SetLineStyle(2);
66    
67     column_r[0] = new TLine(DY,ZTRK6,DY,ZTRK1);
68     column_r[0]->SetLineColor(CCOL);
69     column_r[0]->SetLineStyle(2);
70    
71     column_c[0] = new TLine(DX1,YTRKL,DX1,YTRKR);
72     column_c[1] = new TLine(DX2,YTRKL,DX2,YTRKR);
73     column_c[2] = new TLine(XTRKL,DY,XTRKR,DY);
74     column_c[0]->SetLineColor(CCOL);
75     column_c[1]->SetLineColor(CCOL);
76     column_c[2]->SetLineColor(CCOL);
77     column_c[0]->SetLineStyle(2);
78     column_c[1]->SetLineStyle(2);
79     column_c[2]->SetLineStyle(2);
80    
81    
82     }
83     //
84     /**
85     *Draw x projection
86     */
87     void GTrkVolume::DrawProjectionX(){
88     cavity_l->Draw();
89     for(Int_t ip=1; ip<=6;ip++)plane_l[ip-1]->Draw();
90     column_l[0]->Draw();
91     column_l[1]->Draw();
92     }
93     //
94     /**
95     *Draw y projection
96     */
97     void GTrkVolume::DrawProjectionY(){
98     cavity_r->Draw();
99     for(Int_t ip=1; ip<=6;ip++)plane_r[ip-1]->Draw();
100     column_r[0]->Draw();
101     }
102     //
103     /**
104     *Draw top projection
105     */
106     void GTrkVolume::DrawProjectionT(){
107     cavity_c->Draw();
108     column_c[0]->Draw();
109     column_c[1]->Draw();
110     column_c[2]->Draw();
111     }
112     //
113     void GTrkVolume::Delete(){
114     cavity_l->Delete();
115     cavity_r->Delete();
116     cavity_c->Delete();
117     for(Int_t ip=1; ip<=6;ip++){
118     plane_l[ip-1]->Delete();
119     plane_r[ip-1]->Delete();
120     };
121     column_l[0]->Delete();
122     column_l[1]->Delete();
123     column_r[0]->Delete();
124     column_c[0]->Delete();
125     column_c[1]->Delete();
126     column_c[2]->Delete();
127    
128    
129     };
130    
131     //===============================================================
132     //
133     //
134     //===============================================================
135     GTrkLevel2::GTrkLevel2(){
136     Track = new TClonesArray("GTrkTrack");
137     Image = new TClonesArray("GTrkTrack");
138     SingletX = new TClonesArray("GTrkHit");
139     SingletY = new TClonesArray("GTrkHit");
140    
141     DRAWIMAGE=false;
142    
143     }
144     //
145     //Int_t GTrkLevel2::Set(TrkLevel2* trk_event){
146     // return 0;
147     //}
148     //
149     /**
150     * Constructor
151     */
152     GTrkLevel2::GTrkLevel2(TrkLevel2* trk_event){
153    
154     // cout << "Tracker: view status ";
155     for(Int_t iv=0; iv<12; iv++)cout << trk_event->good[iv];
156     cout << endl;
157    
158     // cout << "Tracker: n.tracks "<<trk_event->GetNTracks()<<endl;
159     // cout << "Tracker: n.singlet X "<<trk_event->nclsx()<<endl;
160     // cout << "Tracker: n.singlet Y "<<trk_event->nclsy()<<endl;
161    
162     Track = new TClonesArray("GTrkTrack");
163     Image = new TClonesArray("GTrkTrack");
164     SingletX = new TClonesArray("GTrkHit");
165     SingletY = new TClonesArray("GTrkHit");
166    
167     DRAWIMAGE=false;
168    
169     SetTracks(trk_event);
170     SetSinglets(trk_event);
171    
172     }
173    
174     /**
175     * Constructor
176     */
177     GTrkLevel2::GTrkLevel2(PamLevel2* pam_event){
178    
179     TrkLevel2* trk_event = pam_event->GetTrkLevel2();
180    
181     // cout << "Tracker: view status ";
182     // for(Int_t iv=0; iv<12; iv++)cout << trk_event->good[iv];
183     // cout << endl;
184    
185     // cout << "Tracker: n.tracks "<<trk_event->GetNTracks()<<endl;
186     // cout << "Tracker: n.singlet X "<<trk_event->nclsx()<<endl;
187     // cout << "Tracker: n.singlet Y "<<trk_event->nclsy()<<endl;
188    
189     Track = new TClonesArray("GTrkTrack");
190     Image = new TClonesArray("GTrkTrack");
191     SingletX = new TClonesArray("GTrkHit");
192     SingletY = new TClonesArray("GTrkHit");
193    
194     DRAWIMAGE=false;
195    
196     SetTracks(pam_event);
197     SetSinglets(trk_event);
198    
199     }
200    
201     void GTrkLevel2::SetTracks(TrkLevel2* trk_event){
202     TClonesArray &gt = *Track;
203     TClonesArray &gi = *Image;
204     TClonesArray &gsx = *SingletX;
205     TClonesArray &gsy = *SingletY;
206     Int_t isx = SingletX->GetEntries();
207     Int_t isy = SingletY->GetEntries();
208     for(Int_t it=0; it<trk_event->GetNTracks(); it++){
209     TrkTrack *tk = trk_event->GetTrack(it);
210     new(gt[it]) GTrkTrack(tk);
211     for(Int_t i=0; i<6; i++){
212     if(tk->XGood(i)) new(gsx[isx++]) GTrkHit(tk->xm[i],tk->zm[i],tk->dedx_x[i]);
213     if(tk->YGood(i)) new(gsy[isy++]) GTrkHit(tk->ym[i],tk->zm[i],tk->dedx_y[i]);
214     }
215    
216     if( tk->HasImage() ){
217     TrkTrack *tk = trk_event->GetTrackImage(it);
218     new(gi[it]) GTrkTrack(tk);
219     }
220    
221    
222     }
223    
224    
225     }
226     void GTrkLevel2::SetTracks(PamLevel2* pam_event){
227     TClonesArray &gt = *Track;
228     TClonesArray &gi = *Image;
229     TClonesArray &gsx = *SingletX;
230     TClonesArray &gsy = *SingletY;
231     Int_t isx = SingletX->GetEntries();
232     Int_t isy = SingletY->GetEntries();
233    
234     // ==== NON FUNZIONA ===
235     // TClonesArray *sorted = pam_event->GetTracks();
236     // cout << "==== "<<sorted->GetEntries()<<endl;
237     // for(Int_t it=0; it<pam_event->GetTrkLevel2()->GetNTracks(); it++){
238    
239     // TrkTrack *tk = (TrkTrack*)(*sorted)[it];
240     // new(gt[it]) GTrkTrack(tk);
241     // for(Int_t i=0; i<6; i++){
242     // if(tk->XGood(i)) new(gsx[isx++]) GTrkHit(tk->xm[i],tk->zm[i],tk->dedx_x[i]);
243     // if(tk->YGood(i)) new(gsy[isy++]) GTrkHit(tk->ym[i],tk->zm[i],tk->dedx_y[i]);
244     // }
245     // }
246    
247     for(Int_t it=0; it<pam_event->GetTrkLevel2()->GetNTracks(); it++){
248     TrkTrack *tk = pam_event->GetTrack(it)->GetTrkTrack();
249     new(gt[it]) GTrkTrack(tk);
250     for(Int_t i=0; i<6; i++){
251     if(tk->XGood(i)) new(gsx[isx++]) GTrkHit(tk->xm[i],tk->zm[i],tk->dedx_x[i]);
252     if(tk->YGood(i)) new(gsy[isy++]) GTrkHit(tk->ym[i],tk->zm[i],tk->dedx_y[i]);
253     }
254     if( tk->HasImage() ){
255     // cout << "*** HAS IMAGE ***"<<endl;
256     TrkTrack *tk = pam_event->GetTrackImage(it)->GetTrkTrack();
257     new(gi[it]) GTrkTrack(tk);
258     }
259     }
260    
261    
262     }
263    
264     void GTrkLevel2::SetSinglets(TrkLevel2* trk_event){
265     TClonesArray &gsx = *SingletX;
266     Int_t isx = SingletX->GetEntries();
267     for(Int_t is=0; is<trk_event->nclsx(); is++){
268    
269     TrkSinglet *s = trk_event->GetSingletX(is);
270    
271     GTrkHit h = GTrkHit(s->coord[0],trk_event->GetZTrk(s->plane),s->sgnl);
272     // h.SetCluster(s->GetCluster());
273     new(gsx[isx++]) GTrkHit(&h);
274     }
275     TClonesArray &gsy = *SingletY;
276     Int_t isy = SingletY->GetEntries();
277     Int_t iss=0;
278     for(Int_t is=0; is<trk_event->nclsy(); is++){
279    
280     for(Int_t i=0; i<2; i++){
281     TrkSinglet *s = trk_event->GetSingletY(is);
282    
283     GTrkHit h = GTrkHit(s->coord[i],trk_event->GetZTrk(s->plane),s->sgnl);
284     // h.SetCluster(s->GetCluster());
285     new(gsy[isy++]) GTrkHit(&h);
286     iss++;
287     }
288     }
289     }
290    
291     //
292     void GTrkLevel2::DrawProjectionX(){
293    
294    
295     TClonesArray &s = *(SingletX);
296     for(Int_t is=0; is<SingletX->GetEntries(); is++){
297     ((GTrkHit*)s[is])->Draw();
298     };
299    
300     TClonesArray &t = *(Track);
301     for(Int_t it=0; it<Track->GetEntries(); it++){
302     ((GTrkTrack*)t[it])->DrawProjectionX();
303     };
304    
305     };
306     void GTrkLevel2::DrawProjectionY(){
307    
308     TClonesArray &s = *(SingletY);
309     for(Int_t is=0; is<SingletY->GetEntries(); is++){
310     ((GTrkHit*)s[is])->Draw();
311     };
312    
313     TClonesArray &t = *(Track);
314     for(Int_t it=0; it<Track->GetEntries(); it++){
315     ((GTrkTrack*)t[it])->DrawProjectionY();
316     };
317    
318     if(DRAWIMAGE){
319     TClonesArray &i = *(Image);
320     for(Int_t it=0; it<Image->GetEntries(); it++){
321     if( i[it] ){
322     ((GTrkTrack*)i[it])->GetProjectionY()->SetLineStyle(2);
323     ((GTrkTrack*)i[it])->DrawProjectionY();
324     }
325     };
326     }
327    
328     };
329     void GTrkLevel2::DrawProjectionT(){
330    
331     TClonesArray &t = *(Track);
332     for(Int_t it=0; it<Track->GetEntries(); it++){
333     ((GTrkTrack*)t[it])->DrawProjectionT();
334     };
335    
336     if(DRAWIMAGE){
337     TClonesArray &i = *(Image);
338     for(Int_t it=0; it<Image->GetEntries(); it++){
339     if( i[it] ){
340     ((GTrkTrack*)i[it])->GetProjectionT()->SetLineStyle(2);
341     ((GTrkTrack*)i[it])->DrawProjectionT();
342     }
343     };
344     }
345    
346     };
347     //
348     void GTrkLevel2::Delete(){
349     Track->Delete();
350     Image->Delete();
351     SingletX->Delete();
352     SingletY->Delete();
353     }
354     void GTrkLevel2::Clear(){
355     Track->Clear("C");
356     Image->Clear("C");
357     SingletX->Clear("C");
358     SingletY->Clear("C");
359     }
360     //===============================================================
361     //
362     //
363     //===============================================================
364     GTrkTrack::GTrkTrack(){
365    
366     tr_l = new TPolyLine();
367     tr_r = new TPolyLine();
368     tr_c = new TPolyLine();
369    
370    
371     for (Int_t i=0; i<6; i++){
372     // m_l[i] = m_r[i] = m_c[i] = NULL;
373     mt_l[i] = new TMarker();
374     mt_r[i] = new TMarker();
375     mt_c[i] = new TMarker();
376     }
377    
378     }
379     GTrkTrack::~GTrkTrack(){
380    
381     // delete tr_l;
382     // delete tr_r;
383     // delete tr_c;
384    
385     tr_l->Delete();
386     tr_r->Delete();
387     tr_c->Delete();
388    
389    
390     for (Int_t i=0; i<6; i++){
391     // cout << " GTrkTrack::~GTrkTrack() ==> m_l[i] "<<m_l[i]<<endl;
392     // if( m_l[i] )m_l[i]->Delete();
393     // if( m_r[i] )m_r[i]->Delete();
394     // if( m_c[i] )m_c[i]->Delete();
395    
396     if( mt_l[i] )mt_l[i]->Delete();
397     if( mt_r[i] )mt_r[i]->Delete();
398     if( mt_c[i] )mt_c[i]->Delete();
399     }
400    
401     };
402     //
403     GTrkTrack::GTrkTrack(TrkTrack* tr){
404    
405     // --------------------------------------------
406     // create trajectory in the tracker
407    
408     float pz[100];
409     float ztop = 55.;
410     float zbot = -27.;
411     float dz = (ztop-zbot)/100;
412     for(int i=0; i<100; i++)pz[i]=ztop-dz*i;
413     // Trajectory *tj = new Trajectory(100);
414     Trajectory *tj = new Trajectory(100,pz);
415     tr->DoTrack2(tj);
416    
417     // cout << tr->GetRigidity()<<" GV"<<endl;
418    
419     // for (Int_t ii=0;ii<100;ii+=10)cout<<tj->x[ii]<<" - "<<tj->y[ii]<<" - "<<tj->z[ii]<<endl;
420    
421     Int_t iwall=100;
422     // Int_t iwall=0;
423     // for(iwall=0; iwall<tj->npoint; iwall++){
424     // if(tj->x[iwall] <= XTRKL || tj->x[iwall] >= XTRKR || tj->y[iwall]<= YTRKL || tj->y[iwall]>= YTRKR)break;
425     // }
426     // create track projections
427     tr_l = new TPolyLine( iwall, tj->x, tj->z );
428     tr_r = new TPolyLine( iwall, tj->y, tj->z );
429     tr_c = new TPolyLine( iwall, tj->x, tj->y );
430     tr_l->SetLineColor(HTCOL);
431     tr_r->SetLineColor(HTCOL);
432     tr_c->SetLineColor(HTCOL);
433     tj->Delete();
434    
435     // --------------------------------------------
436     // create
437     for(Int_t i=0; i<6; i++){
438     if(tr->XGood(i)){
439     mt_l[i] = new TMarker(tr->xm[i],tr->zm[i],20);
440     mt_l[i]->SetMarkerSize(0.6);
441     mt_l[i]->SetMarkerColor(HTCOL);
442     // cout << "X-hit "<<i<<" "<<tr->xm[i]<<endl;
443     }else{
444     mt_l[i] = NULL;
445     };
446     if(tr->YGood(i)){
447     mt_r[i] = new TMarker(tr->ym[i],tr->zm[i],20);
448     mt_r[i]->SetMarkerSize(0.6);
449     mt_r[i]->SetMarkerColor(HTCOL);
450     // cout << "Y-hit "<<i<<" "<<tr->ym[i]<<endl;
451     }else{
452     mt_r[i] = NULL;
453     };
454     if(tr->XGood(i) || tr->YGood(i)){
455     mt_c[i] = new TMarker(tr->xm[i],tr->ym[i],20);
456     mt_c[i]->SetMarkerSize(0.9-i*0.1);
457     mt_c[i]->SetMarkerColor(HTCOL);
458     }else{
459     mt_c[i] = NULL;
460     };
461     }
462    
463    
464     }
465    
466     //
467     GTrkTrack::GTrkTrack(GTrkTrack* gt){
468    
469     tr_l = new TPolyLine( *(gt->tr_l) );
470     tr_r = new TPolyLine( *(gt->tr_r) );
471     tr_c = new TPolyLine( *(gt->tr_c) );
472    
473    
474     for(Int_t i=0; i<6; i++){
475     // m_l[i] = m_r[i] = m_c[i] = NULL;
476     // if( gt->m_l[i] ) m_l[i] = new GTrkHit( gt->m_l[i] );
477     // if( gt->m_r[i] ) m_r[i] = new GTrkHit( gt->m_r[i] );
478     // if( gt->m_c[i] ) m_c[i] = new GTrkHit( gt->m_c[i] );
479    
480     mt_l[i] = new TMarker( *(gt->mt_l[i]) );
481     mt_r[i] = new TMarker( *(gt->mt_r[i]) );
482     mt_c[i] = new TMarker( *(gt->mt_c[i]) );
483     }
484    
485     }
486     //
487     void GTrkTrack::Delete(){
488    
489     tr_l->Delete();
490     tr_r->Delete();
491     tr_c->Delete();
492     for (Int_t i=0; i<6; i++){
493     if( mt_l[i] )mt_l[i]->Delete();
494     if( mt_r[i] )mt_r[i]->Delete();
495     if( mt_c[i] )mt_c[i]->Delete();
496     }
497     };
498    
499     void GTrkTrack::Clear(){
500    
501    
502     };
503    
504     void GTrkTrack::DrawProjectionX(){
505     // cout << "draw track x\n";
506     for(Int_t i=0; i<6; i++){
507     if( mt_l[i] )mt_l[i]->Draw();
508     };
509     tr_l->Draw();
510     };
511     void GTrkTrack::DrawProjectionY(){
512     // cout << "draw track y\n";
513     for(Int_t i=0; i<6; i++){
514     if( mt_r[i] )mt_r[i]->Draw();
515     };
516     tr_r->Draw();
517     };
518     void GTrkTrack::DrawProjectionT(){
519     // cout << "draw track t\n";
520     for(Int_t i=0; i<6; i++){
521     if( mt_c[i] )mt_c[i]->Draw();
522     };
523     tr_c->Draw();
524     };
525     //===============================================================
526     //
527     //
528     //===============================================================
529     GTrkHit::GTrkHit(){
530     m1 = new TMarker();
531     m2 = new TEllipse();
532     cl = 0;
533     };
534    
535     GTrkHit::GTrkHit(GTrkHit* h){
536     m1 = new TMarker(*(h->m1));
537     m2 = new TEllipse(*(h->m2));
538     cl = h->cl;
539     };
540     //
541     GTrkHit::GTrkHit(Float_t x, Float_t y, Float_t w){
542    
543     m1 = new TMarker(x,y,20);
544     // m2 = new TMarker(x,y,20);
545     m2 = new TEllipse(x,y,0.,0.);
546     cl = 0;
547    
548    
549    
550     // create a palette vvvvvvvvvvvvvvvvvvvvvvvvvvv
551     // const Int_t colNum = 30;//12;
552     // const Int_t colBase = 500;
553     // // Int_t palette[colNum];
554     // TColor *color;
555     // // for (Int_t i=0;i<colNum;i++) {
556     // // /* Int_t ii = 255*i/colNum;
557     // // Int_t R=255;
558     // // Int_t G=255;
559     // // Int_t B=255-ii;*/
560     // // Int_t ii = 255*i/colNum;
561     // // Int_t R=255-51*((Int_t)(i/6))%6;
562     // // Int_t G=255;
563     // // Int_t B=255-51*i%6;
564     // // R=R/255;
565     // // G=G/255;
566     // // B=B/255;
567     // // if( !gROOT->GetColor(colBase+i) ){
568     // // color = new TColor(colBase+i,R,G,B,"");
569     // // // , pow(i/((colNum)*1.0),0.3)
570     // // // , pow(i/((colNum)*1.0),0.3)
571     // // // ,0.5*(i/((colNum)*1.0)),"");
572     // // }else{
573     // // color = gROOT->GetColor(colBase+i);
574     // // color->SetRGB(R,G,B);
575     // // };
576     // // // palette[i] = 301+i;
577     // // }
578     // // // gStyle->SetPalette(colNum,palette);
579     // // // create a palette ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
580    
581     // // Int_t col = colNum*(Int_t)sqrt(w)/8 + colBase;
582     // m2->SetMarkerSize(w*0.2+1.1);
583     // m2->SetMarkerSize(sqrt(w)*.9);
584     // m2->SetMarkerColor(col);
585     Int_t colo = 10;
586     if ( w > 0.7 ) colo = 38;
587     if ( w > 2. ) colo = 4;
588     if ( w > 10. ) colo = 3;
589     if ( w > 100. ) colo = 2;
590     if ( w > 500. ) colo = 6;
591    
592     m1->SetMarkerSize(0.7);
593     // m1->SetMarkerColor(HTCOL);
594     m1->SetMarkerColor(colo);
595    
596     m2->SetR1(sqrt(w)*.8);
597     m2->SetR2(m2->GetR1());
598     m2->SetLineColor(colo);
599     m2->SetLineWidth(1);
600     // cout << w << " "<< col << endl;
601    
602     // cout << "creato \n";
603     };
604     //
605     void GTrkHit::Draw(){
606    
607     m2->Draw();
608     m1->Draw();
609    
610     // gPad->GetCanvas()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)", "GTrkHit", this, "ExecuteEvent(Int_t,Int_t,Int_t,TObject*)");
611    
612     };
613     void GTrkHit::Delete(){
614     if( m2 )m2->Delete();
615     if( m1 )m1->Delete();
616     // if( cl )cl->Delete();
617     };
618    
619     void GTrkHit::ExecuteEvent(Int_t event, Int_t px, Int_t py, TObject* obj)
620     {
621     // Execute action corresponding to one event.
622     // This member function is called when a marker is clicked with the locator
623     // If Left button is clicked on a marker, the marker is moved to
624     // a new position when the mouse button is released.
625    
626     if(obj != m1 && obj != m2) return;
627    
628     if(!cl) return;
629    
630     TCanvas *tempc = 0;
631     TPad *tempp = 0;
632     TCanvas *clc = 0;
633     TPad *clpx = 0;
634     TPad *clpy = 0;
635     TPad *clp = 0;
636     TPad *from = 0;
637     TObject *tempo = 0;
638    
639     TIter nextcanv(gROOT->GetListOfCanvases());
640     while ( (tempc = (TCanvas*) nextcanv()) ) {
641     // cout << " canvas - "<<tempc->GetName()<<endl;
642     TIter nextpad( tempc->GetListOfPrimitives() );
643     while( (tempp = (TPad*) nextpad()) ){
644     // cout << " pad - "<<tempp->GetName()<<endl;
645     TString name = tempp->GetName();
646     // if( !name.CompareTo("clx") )clpx = tempp;
647     // if( !name.CompareTo("cly") )clpy = tempp;
648     if( !name.CompareTo("cl") )clp = tempp;
649     TIter nextobj( tempp->GetListOfPrimitives() );
650     while( (tempo = nextobj()) ){
651     // cout << " pad - "<<tempp->GetName()<<endl;
652     if( tempo == obj ) from = tempp;
653     };
654     };
655     }
656     // if(clp) clp->cd();
657     // if( (from->GetName()).Contains("px") && !clpx)
658     if(clp){
659     // clp->cd();
660     clp->Divide(1,2);
661     clp->Update();
662     TString name = from->GetName();
663     // cout << "obj selected from: "<<from->GetName()<<endl;
664     if( !name.CompareTo("px") ){cout<< "clp->cd(1)\n";clp->cd(1);}
665     if( !name.CompareTo("py") ){cout<< "clp->cd(2)\n";clp->cd(2);}
666    
667     }else {
668     cout << "cl pad not fownd -- create new canvas \n";
669     clc = new TCanvas("cl","Cluster");
670     clp = (TPad*) clc;
671     clp->cd();
672     };
673    
674     cout << "dove siamo: "<<gPad->GetName()<<endl;
675     switch (event) {
676    
677    
678     case kButton1Down:
679     // gVirtualX->SetTextColor(-1); // invalidate current text color (use xor mode)
680     // TAttMarker::Modify(); //Change marker attributes only if necessary
681     // No break !!!
682    
683     cout << "kButton1Down\n";
684    
685     break;
686    
687     case kMouseMotion:
688     // pxold = px; pyold = py;
689     // gPad->SetCursor(kMove);
690     cout << "kMouseMotion\n";
691    
692     cl->Draw();
693     gPad->Update();
694     // clp->Update();
695     // cout << clp->GetName() << endl;
696    
697     break;
698    
699     case kButton1Motion:
700     // p.fX = pxold; p.fY = pyold;
701     // gVirtualX->DrawPolyMarker(1, &p);
702     // p.fX = px; p.fY = py;
703     // gVirtualX->DrawPolyMarker(1, &p);
704     // pxold = px; pyold = py;
705     cout << "kButton1Motion\n";
706     break;
707    
708     case kButton1Up:
709     // Double_t dpx, dpy, xp1,yp1;
710     // if (TestBit(kMarkerNDC)) {
711     // dpx = gPad->GetX2() - gPad->GetX1();
712     // dpy = gPad->GetY2() - gPad->GetY1();
713     // xp1 = gPad->GetX1();
714     // yp1 = gPad->GetY1();
715     // fX = (gPad->AbsPixeltoX(pxold)-xp1)/dpx;
716     // fY = (gPad->AbsPixeltoY(pyold)-yp1)/dpy;
717     // } else {
718     // fX = gPad->PadtoX(gPad->AbsPixeltoX(px));
719     // fY = gPad->PadtoY(gPad->AbsPixeltoY(py));
720     // }
721     // gPad->Modified(kTRUE);
722     // gVirtualX->SetTextColor(-1);
723     cout << "kButton1Up\n";
724     break;
725     }
726     }
727    
728     //===============================================================
729     //
730     //
731     //===============================================================
732     GTrkCluster::GTrkCluster(){
733     sgnl = new TH1F();
734     cut = new TH1F();
735     seed = new TH1F();
736     sat = new TH1F();
737     maxs = new TLine();
738     zero = new TLine();
739     }
740     //
741     GTrkCluster::~GTrkCluster(){
742     if(sgnl) sgnl->Delete();
743     if(cut) cut->Delete();
744     if(seed) seed->Delete();
745     if(sat) sat->Delete();
746     if(maxs) maxs->Delete();
747     if(zero) zero->Delete();
748     }
749     //
750     GTrkCluster::GTrkCluster(GTrkCluster* gcl){
751     sgnl = gcl->sgnl;
752     cut = gcl->cut;
753     seed = gcl->seed;
754     sat = gcl->sat;
755     maxs = gcl->maxs;
756     zero = gcl->zero;
757     }
758     //
759     GTrkCluster::GTrkCluster(TrkCluster* cl){
760    
761     maxs = new TLine(cl->maxs, 0, cl->maxs, cl->clsignal[cl->indmax]);
762    
763     Float_t min = cl->maxs - cl->indmax - 0.5;
764     Float_t max = min + cl->CLlength;
765    
766     zero = new TLine(min,0.,max,0.);
767    
768     TString title = "";
769     title.Form("Cluster - view %i",cl->view);
770    
771     TString h = "";
772     h = ""; h.Form("sgnl-%i",cl->maxs);
773     sgnl = new TH1F(h.Data(),title.Data(),cl->CLlength,min,max);
774     h = ""; h.Form("cut-%i",cl->maxs);
775     cut = new TH1F(h.Data(),title.Data(),cl->CLlength,min,max);
776     h = ""; h.Form("seed-%i",cl->maxs);
777     seed = new TH1F(h.Data(),title.Data(),cl->CLlength,min,max);
778     h = ""; h.Form("sat-%i",cl->maxs);
779     sat = new TH1F(h.Data(),title.Data(),cl->CLlength,min,max);
780     for (Int_t is = 0; is < cl->CLlength; is++){
781     sgnl->Fill( (Float_t)(min+is), cl->clsignal[is] );
782     cut->Fill( (Float_t)(min+is), 4*cl->clsigma[is] );
783     if( (cl->view)%2 )seed->Fill( (Float_t)(min+is), 6*cl->clsigma[is] );
784     else seed->Fill( (Float_t)(min+is), 7*cl->clsigma[is] );
785    
786     // if( (cl->view)%2 && cl->cladc[is] < 100 ) sat->Fill( (Float_t)(min+is), cl->clsignal[is] );
787     // if( !((cl->view)%2) && cl->cladc[is] > 3100) sat->Fill( (Float_t)(min+is), cl->clsignal[is] );
788     if( (cl->view)%2 )sat->Fill( (Float_t)(min+is), -80+cl->clsignal[is]+cl->cladc[is] );
789     else sat->Fill( (Float_t)(min+is), 2980+cl->clsignal[is]-cl->cladc[is] );
790    
791     // if( (cl->view)%2 )cout << -100+cl->clsignal[is]+cl->cladc[is] <<endl;
792     // else cout << 3100+cl->clsignal[is]-cl->cladc[is]<<endl ;
793    
794     };
795    
796     Float_t mi = -5;
797     Float_t ma = 1.1*sgnl->GetMaximum(5000);
798    
799     sgnl->SetStats(0);
800     sgnl->SetLineWidth(2);
801     sgnl->SetFillColor(19);
802     sgnl->SetMinimum(mi);
803     sgnl->SetMaximum(ma);
804    
805     cut->SetStats(0);
806     cut->SetLineStyle(2);
807     cut->SetLineWidth(2);
808     cut->SetLineColor(9);
809     cut->SetMinimum(mi);
810     cut->SetMaximum(ma);
811    
812    
813     sat->SetStats(0);
814     // sat->SetFillColor(18);
815     // sat->SetLineWidth(0);
816     // sat->SetLineColor(18);
817     sat->SetLineWidth(2);
818     sat->SetLineStyle(2);
819     sat->SetLineColor(2);
820     sat->SetMinimum(mi);
821     sat->SetMaximum(ma);
822    
823     seed->SetStats(0);
824     // seed->SetFillColor(19);
825     seed->SetLineWidth(2);
826     seed->SetLineStyle(2);
827     seed->SetLineColor(3);
828     seed->SetMinimum(mi);
829     seed->SetMaximum(ma);
830    
831     maxs->SetLineStyle(2);
832     maxs->SetLineWidth(2);
833     maxs->SetLineColor(2);
834     zero->SetLineStyle(0);
835     zero->SetLineWidth(1);
836     zero->SetLineColor(0);
837    
838     }
839     //
840     void GTrkCluster::Draw(){
841    
842     sgnl->Draw();
843     sat->Draw("same");
844    
845     cut->Draw("same");
846     seed->Draw("same");
847    
848     maxs->Draw();
849    
850    
851     }
852     //
853     void GTrkCluster::Delete(){
854     if(sgnl) sgnl->Delete();
855     if(cut) cut->Delete();
856     if(seed) seed->Delete();
857     if(sat) sat->Delete();
858     if(maxs) maxs->Delete();
859     if(zero) zero->Delete();
860     }
861     //===============================================================
862     //
863     //
864     //===============================================================
865     GTrkHough::GTrkHough(){
866    
867     TrackCandidates = new TClonesArray("GTrkTrack");
868    
869     }
870     /**
871     * Constructor
872     */
873     GTrkHough::GTrkHough(TrkHough *lh){
874    
875    
876     // cout << "Tracker: n.track-candidates "<<lh->GetNCandidates()<<endl;
877    
878     TrackCandidates = new TClonesArray("GTrkTrack");
879     for(int i=0; i<100; i++)gtrip[i]=0;
880     for(int i=0; i<100; i++)gdoub[i]=0;
881    
882     if(!lh)return;
883     SetCandidates(lh);
884     SetHough(lh);
885    
886     }
887     void GTrkHough::SetCandidates(TrkHough* lh){
888    
889     if(!lh)return;
890     TClonesArray &gt = *TrackCandidates;
891     for(Int_t it=0; it<lh->GetNCandidates(); it++){
892     TrkTrack *tk = lh->GetCandidate(it);
893     new(gt[it]) GTrkTrack(tk);
894     }
895    
896     }
897    
898     void GTrkHough::SetHough(TrkHough* lh){
899    
900     if(!lh)return;
901    
902     trip = new TMultiGraph();
903     doub = new TMultiGraph();
904    
905     // cout << "Tracker: n.doublets "<<lh->ndblt<<endl;
906     // ALL --------------------------------------------------
907     int ndblt=0;
908     gdoub[ndblt] = new TGraph();
909     for(int id=0; id<lh->ndblt; id++){
910     // cout << "**Y** "<<lh->alfayz1[id]<<" "<<lh->alfayz2[id]<<endl;
911     // cout << "**Y** "<<lh->db_cloud[id]<<endl;
912     gdoub[ndblt]->SetPoint(id+1,lh->alfayz1[id],lh->alfayz2[id]);
913     }
914     doub->Add(gdoub[ndblt],"p");
915     ndblt++;
916     // CLOUDS --------------------------------------------------
917    
918    
919     // cout << "Tracker: n.triplets "<<lh->ntrpt<<endl;
920     int ntrpt=0;
921     gtrip[ntrpt] = new TGraph();
922     for(int id=0; id<lh->ntrpt; id++){
923     // cout << "**X** "<<lh->alfaxz1[id]<<" "<<lh->alfaxz2[id]<<endl;
924     // cout << "**X** "<<lh->tr_cloud[id]<<endl;
925     gtrip[ntrpt]->SetPoint(id+1,lh->alfaxz1[id],lh->alfaxz2[id]);
926     }
927     trip->Add(gtrip[ntrpt],"p");
928     ntrpt++;
929    
930     // cout << "done"<<endl;
931    
932     }
933    
934     void GTrkHough::DrawProjectionX(){
935    
936    
937     if(!TrackCandidates)return;
938     TClonesArray &t = *(TrackCandidates);
939     for(Int_t it=0; it<TrackCandidates->GetEntries(); it++){
940     ((GTrkTrack*)t[it])->GetProjectionX()->SetLineStyle(2);
941     ((GTrkTrack*)t[it])->GetProjectionX()->SetLineColor(TCCOL);
942     for(int ip=0; ip<6; ip++) if( ((GTrkTrack*)t[it])->GetProjectionX_Points(ip) ) ((GTrkTrack*)t[it])->GetProjectionX_Points(ip)->SetMarkerColor(TCCOL);
943     ((GTrkTrack*)t[it])->DrawProjectionX();
944     };
945    
946     // TCanvas *c = new TCanvas();
947     // trip->Draw("ap");
948    
949     };
950     void GTrkHough::DrawProjectionY(){
951    
952     if(!TrackCandidates)return;
953     TClonesArray &t = *(TrackCandidates);
954     for(Int_t it=0; it<TrackCandidates->GetEntries(); it++){
955     ((GTrkTrack*)t[it])->GetProjectionY()->SetLineStyle(2);
956     ((GTrkTrack*)t[it])->GetProjectionY()->SetLineColor(TCCOL);
957     for(int ip=0; ip<6; ip++)if(((GTrkTrack*)t[it])->GetProjectionY_Points(ip))((GTrkTrack*)t[it])->GetProjectionY_Points(ip)->SetMarkerColor(TCCOL);
958     ((GTrkTrack*)t[it])->DrawProjectionY();
959     };
960    
961     // TCanvas *c = new TCanvas();
962     // doub->Draw("ap");
963    
964     };
965     void GTrkHough::DrawProjectionT(){
966    
967     if(!TrackCandidates)return;
968     TClonesArray &t = *(TrackCandidates);
969     for(Int_t it=0; it<TrackCandidates->GetEntries(); it++){
970     ((GTrkTrack*)t[it])->GetProjectionT()->SetLineStyle(2);
971     ((GTrkTrack*)t[it])->GetProjectionT()->SetLineColor(TCCOL);
972     for(int ip=0; ip<6; ip++)if(((GTrkTrack*)t[it])->GetProjectionT_Points(ip))((GTrkTrack*)t[it])->GetProjectionT_Points(ip)->SetMarkerColor(TCCOL);
973     ((GTrkTrack*)t[it])->DrawProjectionT();
974     };
975    
976    
977     };
978     void GTrkHough::Delete(){
979    
980     // for(int i=0; i<100; i++)cout << gtrip[i] << endl;
981     // for(int i=0; i<100; i++)cout << gdoub[i] << endl;
982    
983     // for(int i=0; i<100; i++)if(gtrip[i])trip->Delete();
984     // if(trip)trip->Delete();
985    
986     // for(int i=0; i<100; i++)if(gdoub[i])doub->Delete();
987     // if(doub)doub->Delete();
988    
989     TrackCandidates->Delete();
990    
991     }
992     GTrkHough::~GTrkHough(){
993    
994     // cout << "distruttore"<<endl;
995    
996     // for(int i=0; i<100; i++)cout << gtrip[i] << endl;
997     // for(int i=0; i<100; i++)cout << gdoub[i] << endl;
998    
999     // for(int i=0; i<100; i++)if(gtrip[i])trip->Delete();
1000     // if(trip)trip->Delete();
1001    
1002     // for(int i=0; i<100; i++)if(gdoub[i])doub->Delete();
1003     // if(doub)doub->Delete();
1004    
1005     TrackCandidates->Delete();
1006    
1007     }
1008     void GTrkHough::Clear(){
1009    
1010     TrackCandidates->Clear("C");
1011    
1012     }
1013    
1014    
1015    
1016     ClassImp(GTrkVolume);
1017     ClassImp(GTrkTrack);
1018     ClassImp(GTrkLevel2);
1019     ClassImp(GTrkHit);
1020     ClassImp(GTrkCluster);
1021     ClassImp(GTrkHough);
1022    

  ViewVC Help
Powered by ViewVC 1.1.23