ROOT logo
#include "TDynamicSlice.h"

ClassImp(TDynamicSlice)
TDynamicSlice::TDynamicSlice(TH2* hist, TPad* pad, int mode):TObject()
{
   gROOT->Add(this);
	 
	 TList *l = gROOT->GetList();
   
	 char line[200];
   char command[400];
   int n = l->GetSize();
	 int id = -1;
   for(int i=0;i<n;i++)
   {
     //cout <<i<<"  "<<l->At(i)<<"  "<<this<<endl;
		 if(l->At(i)==this) { id=i; break;}
   }
	 if(id==-1) {delete this; return;}
	 
	 sprintf(command,"((TDynamicSlice*)gROOT->GetList()->At(%d))->process();",id);
	 //cout <<command<<endl;

	 
	 if(!hist) {delete this; return;}
   if(!pad) {delete this; return;}
	 
	 fHist = hist;
	 fType = mode;
	 fPad  = pad;
	 
	 // main frame
   fMainFrame = new TGMainFrame(gClient->GetRoot(),10,10,kMainFrame | kVerticalFrame);
   fMainFrame->SetLayoutBroken(kTRUE);

   // "Dynamic projection preview" group frame
   TGGroupFrame *fGroupFrame646 = new TGGroupFrame(fMainFrame,"Dynamic projection preview");
   fGroupFrame646->SetLayoutBroken(kTRUE);

   // embedded canvas
   TRootEmbeddedCanvas *fRootEmbeddedCanvas651 = new TRootEmbeddedCanvas(0,fGroupFrame646,304,208);
   Int_t wfRootEmbeddedCanvas651 = fRootEmbeddedCanvas651->GetCanvasWindowId();
   fCanvas = fRootEmbeddedCanvas651->GetCanvas();
	 //cout <<fCanvas<<endl;
	 
	 //fCanvas = new TCanvas("fCanvas", 10, 10, wfRootEmbeddedCanvas651);
	 
   //fRootEmbeddedCanvas651->AdoptCanvas(fCanvas);
   fMainFrame->AddFrame(fRootEmbeddedCanvas651, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fRootEmbeddedCanvas651->MoveResize(8,48,304,208);
	 
   TGCheckButton *fTextButton681 = new TGCheckButton(fGroupFrame646,"Enable preview");
   fGroupFrame646->AddFrame(fTextButton681, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fTextButton681->MoveResize(16,24,200,19);
   TGCheckButton *fCheckButton730 = new TGCheckButton(fGroupFrame646,"SetLogX");
   fGroupFrame646->AddFrame(fCheckButton730, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fCheckButton730->MoveResize(136,24,106,19);
   TGCheckButton *fCheckButton744 = new TGCheckButton(fGroupFrame646,"SetLogY");
   fGroupFrame646->AddFrame(fCheckButton744, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fCheckButton744->MoveResize(216,24,96,19);

   fGroupFrame646->SetLayoutManager(new TGVerticalLayout(fGroupFrame646));
   fGroupFrame646->Resize(320,272);
   fMainFrame->AddFrame(fGroupFrame646, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fGroupFrame646->MoveResize(0,96,320,272);
	 
   TGTextButton *fTextButton770 = new TGTextButton(fMainFrame,"Ok");
   fTextButton770->SetTextJustify(36);
   fTextButton770->Resize(160,32);
   fMainFrame->AddFrame(fTextButton770, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fTextButton770->MoveResize(8,8,160,32);
   TGTextButton *fTextButton788 = new TGTextButton(fMainFrame,"Cancel");
   fTextButton788->SetTextJustify(36);
   fTextButton788->Resize(160,32);
   fMainFrame->AddFrame(fTextButton788, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fTextButton788->MoveResize(8,48,160,32);

   // "Axis" group frame
   TGGroupFrame *fGroupFrame970 = new TGGroupFrame(fMainFrame,"Axis");
   fGroupFrame970->SetLayoutBroken(kTRUE);
	 
   TGRadioButton *fRadioButton1048 = new TGRadioButton(fGroupFrame970,"Projection Y");
   fGroupFrame970->AddFrame(fRadioButton1048, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fRadioButton1048->MoveResize(8,40,106,19);
   TGRadioButton *fTextButton983 = new TGRadioButton(fGroupFrame970,"Projection X");
   fGroupFrame970->AddFrame(fTextButton983, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fTextButton983->MoveResize(8,16,106,19);

   fGroupFrame970->SetLayoutManager(new TGVerticalLayout(fGroupFrame970));
   fGroupFrame970->Resize(120,72);
   fMainFrame->AddFrame(fGroupFrame970, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
   fGroupFrame970->MoveResize(192,8,120,72);

   fMainFrame->MapSubwindows();

   fMainFrame->Resize(fMainFrame->GetDefaultSize());
   fMainFrame->MapWindow();
   fMainFrame->Resize(328,372);
	 
	 fMainFrame->SetWindowName(Form("Dynamic slice %s",hist->GetName()));
	 fMainFrame->SetIconName("Dynamic Slice");
	 	 
	 fMainFrame->Connect("CloseWindow()","TDynamicSlice",this,"closeWindow()"); // close window
	 
   fTextButton681->Connect("Clicked()","TDynamicSlice",this,"switchPreview()"); //"Enable preview"
   fCheckButton730->Connect("Clicked()","TDynamicSlice",this,"switchLog(=0)"); //"SetLogX"
   fCheckButton744->Connect("Clicked()","TDynamicSlice",this,"switchLog(=1)"); //"SetLogY"
	 
   fTextButton770->Connect("Clicked()","TDynamicSlice",this,"close(=1)"); //Ok
   fTextButton788->Connect("Clicked()","TDynamicSlice",this,"close(=0)"); //Cancel
	 
   fTextButton983->Connect("Clicked()","TDynamicSlice",this,"setProjection(=0)"); //"Projection X
   fRadioButton1048->Connect("Clicked()","TDynamicSlice",this,"setProjection(=1)"); //"Projection Y
	 
	 fRadio[kPROJX] = fTextButton983;
	 fRadio[kPROJY] = fRadioButton1048;
	 
	 fCheck[kPREVIEW] = fTextButton681;
	 fCheck[kLOGX] = fCheckButton730;
	 fCheck[kLOGY] = fCheckButton744;
	 
	 setProjection(fType);
	 fPreview = false;
	 switchPreview();
	 fWidth = 1;
	 fCenter = 1;
	 fDoIt = true;
	 fProjection = 0;
	 
	 fPad->cd();
	 
	 fBox = new TBox();
	 fBox->SetLineColor(2);
	 fBox->SetFillColor(2);
	 fBox->SetFillStyle(3013);
	 
	 fPad->AddExec("dynamic",command);
	 gROOT->SaveContext();
	 
}
TDynamicSlice::~TDynamicSlice()
{
  delete fBox;
	fPad->Modified();
	fPad->Update();
}
////////////////////////////////////////////////////////////////////////////
void TDynamicSlice::closeWindow()
{
	//fMainFrame->DontCallClose();
	fPad->DeleteExec("dynamic");
	fMainFrame->Cleanup();
	delete fMainFrame;
	delete this;
}

////////////////////////////////////////////////////////////////////////////
void TDynamicSlice::close(int mode)
{
	if(fProjection && mode==0) delete fProjection;
	fMainFrame->SendCloseMessage();
}
////////////////////////////////////////////////////////////////////////////
void TDynamicSlice::setProjection(int mode)
{
	  fType = mode;
		if(mode == 0) 
		{
		  fRadio[kPROJY]->SetState(kButtonUp);
			fRadio[kPROJX]->SetState(kButtonDown);
	  }
		else 
		{
		  fRadio[kPROJY]->SetState(kButtonDown);
			fRadio[kPROJX]->SetState(kButtonUp);
		}
  
}
////////////////////////////////////////////////////////////////////////////
void TDynamicSlice::switchPreview()
{
	  if(fPreview) 
		{
		  fCheck[kPREVIEW]->SetState(kButtonUp);
			fPreview = false;
	  }
		else 
		{
		  fCheck[kPREVIEW]->SetState(kButtonDown);
			fPreview = true;
		}
  
}
////////////////////////////////////////////////////////////////////////////
void TDynamicSlice::switchLog(int axis)
{
		if(fLog[axis]) 
		{
		  fCheck[kLOGX+axis]->SetState(kButtonUp);
			if(axis==0) fCanvas->SetLogx(0);
			else fCanvas->SetLogy(0);
	  }
		else 
		{
		  fCheck[kLOGX+axis]->SetState(kButtonDown);
			if(axis==0) fCanvas->SetLogx(1);
			else fCanvas->SetLogy(1);
		}
		fLog[axis]=!fLog[axis];
	  fCanvas->Modified();
	  fCanvas->Update();
 
}
////////////////////////////////////////////////////////////////////////////
void TDynamicSlice::process()
{
   // events are:
	 //
	 // 1  - left button is pressed down = start window width set
	 // 21 - dragging mouse with left button presed
	 // 11 - left button is released = set window width based on event = 1
	 // 12 - middle button is released. Turns on/of the dynamical slice 

	 int   event = fPad->GetEvent();
	 	 
   if(event==12) fDoIt = !fDoIt;  // middle button turns on/off the dynamical projection	 
	 if(!fDoIt) return;
	 
	 
	 int px = fPad->GetEventX();
   int py = fPad->GetEventY();
   float uxmin = fPad->GetUxmin();
   float uxmax = fPad->GetUxmax();
   float uymin = fPad->GetUymin();
   float uymax = fPad->GetUymax();
   int pxmin = fPad->XtoAbsPixel(uxmin);
   int pxmax = fPad->XtoAbsPixel(uxmax);
   int pymin = fPad->YtoAbsPixel(uymin);
   int pymax = fPad->YtoAbsPixel(uymax);
	 
	 int tmp;
	 if(pxmin>pxmax) { tmp = pxmax; pxmax = pxmin; pxmin = tmp;}
	 if(pymin>pymax) { tmp = pymax; pymax = pymin; pymin = tmp;}
	 
	 if(px<pxmin || px>pxmax) return;
	 if(py<pymin || py>pymax) return;

   //printf("event=%d  px = %d, py = %d, pxmin = %d, pxmax = %d, pymin = %d, pymax = %d  fEdge = %d  fWidth = %d\n ",
	 //        event, px, py, pxmin, pxmax, pymin, pymax, fEdge, fWidth);
	 
	 int p = 0;
	 	 
	 if(fType==0)
	 {
	   fBox->SetX1(fPad->AbsPixeltoX(pxmin));
	   fBox->SetX2(fPad->AbsPixeltoX(pxmax));
		 p = py;
		 
		 if(event==1) {fEdge = py; fWidth = 0;}
		 if(event==21) fWidth = (fEdge-py);
	 }
	 else
	 {
	   fBox->SetY1(fPad->AbsPixeltoY(pymin));
	   fBox->SetY2(fPad->AbsPixeltoY(pymax));	   
		 p = px;
		 
		 if(event==1) {fEdge = px; fWidth = 0;}
		 if(event==21) fWidth = (fEdge-px);
	 }
	 	 
	 
	 // draw box
	 
	 return draw(p);
	 
}
////////////////////////////////////////////////////////////////////////////
void TDynamicSlice::draw(int p)
{
	 float min,max,tmp;
	 float amin, amax;
	 int bmin, bmax;
	 if(fType==0)
	 {
	   fBox->SetY1(fPad->AbsPixeltoY(p));
	   fBox->SetY2(fPad->AbsPixeltoY(p+fWidth));	   		   
		 min = fBox->GetY1();
		 max = fBox->GetY2();
		 amin = fBox->GetX1();
		 amax = fBox->GetX2();
	 }
	 else
	 {
	   fBox->SetX1(fPad->AbsPixeltoX(p));
	   fBox->SetX2(fPad->AbsPixeltoX(p+fWidth));
		 min = fBox->GetX1();
		 max = fBox->GetX2();
		 amin = fBox->GetY1();
		 amax = fBox->GetY2();
	 }
	 
	 if(max<min) { tmp = max; max = min; min = tmp;}
	 if(amax<amin) { tmp = amax; amax = amin; amin = tmp;}
	 
	 fBox->Draw();
	 fPad->Modified();
	 fPad->Update();
	 
	 if(fProjection) { delete fProjection; fProjection = 0;}
	 
	 if(fType==0)
	 {
	   bmin = fHist->GetYaxis()->FindBin(min);
	   bmax = fHist->GetYaxis()->FindBin(max);
		 fProjection = fHist->ProjectionX(Form("%s_px",fHist->GetName()),bmin,bmax);
	 }
	 else
	 {
	   bmin = fHist->GetXaxis()->FindBin(min);
	   bmax = fHist->GetXaxis()->FindBin(max);
		 fProjection = fHist->ProjectionY(Form("%s_py",fHist->GetName()),bmin,bmax);
	 }
	 
	 fProjection->SetTitle("");
	 
	 if(!fPreview) return;
	 
	 fCanvas->cd();
	 fProjection->Draw();
	 fProjection->GetXaxis()->SetRangeUser(amin,amax);
	 fCanvas->Modified();
	 fCanvas->Update();
	 fPad->cd();
	 
	 return;
	 
}
 TDynamicSlice.cxx:1
 TDynamicSlice.cxx:2
 TDynamicSlice.cxx:3
 TDynamicSlice.cxx:4
 TDynamicSlice.cxx:5
 TDynamicSlice.cxx:6
 TDynamicSlice.cxx:7
 TDynamicSlice.cxx:8
 TDynamicSlice.cxx:9
 TDynamicSlice.cxx:10
 TDynamicSlice.cxx:11
 TDynamicSlice.cxx:12
 TDynamicSlice.cxx:13
 TDynamicSlice.cxx:14
 TDynamicSlice.cxx:15
 TDynamicSlice.cxx:16
 TDynamicSlice.cxx:17
 TDynamicSlice.cxx:18
 TDynamicSlice.cxx:19
 TDynamicSlice.cxx:20
 TDynamicSlice.cxx:21
 TDynamicSlice.cxx:22
 TDynamicSlice.cxx:23
 TDynamicSlice.cxx:24
 TDynamicSlice.cxx:25
 TDynamicSlice.cxx:26
 TDynamicSlice.cxx:27
 TDynamicSlice.cxx:28
 TDynamicSlice.cxx:29
 TDynamicSlice.cxx:30
 TDynamicSlice.cxx:31
 TDynamicSlice.cxx:32
 TDynamicSlice.cxx:33
 TDynamicSlice.cxx:34
 TDynamicSlice.cxx:35
 TDynamicSlice.cxx:36
 TDynamicSlice.cxx:37
 TDynamicSlice.cxx:38
 TDynamicSlice.cxx:39
 TDynamicSlice.cxx:40
 TDynamicSlice.cxx:41
 TDynamicSlice.cxx:42
 TDynamicSlice.cxx:43
 TDynamicSlice.cxx:44
 TDynamicSlice.cxx:45
 TDynamicSlice.cxx:46
 TDynamicSlice.cxx:47
 TDynamicSlice.cxx:48
 TDynamicSlice.cxx:49
 TDynamicSlice.cxx:50
 TDynamicSlice.cxx:51
 TDynamicSlice.cxx:52
 TDynamicSlice.cxx:53
 TDynamicSlice.cxx:54
 TDynamicSlice.cxx:55
 TDynamicSlice.cxx:56
 TDynamicSlice.cxx:57
 TDynamicSlice.cxx:58
 TDynamicSlice.cxx:59
 TDynamicSlice.cxx:60
 TDynamicSlice.cxx:61
 TDynamicSlice.cxx:62
 TDynamicSlice.cxx:63
 TDynamicSlice.cxx:64
 TDynamicSlice.cxx:65
 TDynamicSlice.cxx:66
 TDynamicSlice.cxx:67
 TDynamicSlice.cxx:68
 TDynamicSlice.cxx:69
 TDynamicSlice.cxx:70
 TDynamicSlice.cxx:71
 TDynamicSlice.cxx:72
 TDynamicSlice.cxx:73
 TDynamicSlice.cxx:74
 TDynamicSlice.cxx:75
 TDynamicSlice.cxx:76
 TDynamicSlice.cxx:77
 TDynamicSlice.cxx:78
 TDynamicSlice.cxx:79
 TDynamicSlice.cxx:80
 TDynamicSlice.cxx:81
 TDynamicSlice.cxx:82
 TDynamicSlice.cxx:83
 TDynamicSlice.cxx:84
 TDynamicSlice.cxx:85
 TDynamicSlice.cxx:86
 TDynamicSlice.cxx:87
 TDynamicSlice.cxx:88
 TDynamicSlice.cxx:89
 TDynamicSlice.cxx:90
 TDynamicSlice.cxx:91
 TDynamicSlice.cxx:92
 TDynamicSlice.cxx:93
 TDynamicSlice.cxx:94
 TDynamicSlice.cxx:95
 TDynamicSlice.cxx:96
 TDynamicSlice.cxx:97
 TDynamicSlice.cxx:98
 TDynamicSlice.cxx:99
 TDynamicSlice.cxx:100
 TDynamicSlice.cxx:101
 TDynamicSlice.cxx:102
 TDynamicSlice.cxx:103
 TDynamicSlice.cxx:104
 TDynamicSlice.cxx:105
 TDynamicSlice.cxx:106
 TDynamicSlice.cxx:107
 TDynamicSlice.cxx:108
 TDynamicSlice.cxx:109
 TDynamicSlice.cxx:110
 TDynamicSlice.cxx:111
 TDynamicSlice.cxx:112
 TDynamicSlice.cxx:113
 TDynamicSlice.cxx:114
 TDynamicSlice.cxx:115
 TDynamicSlice.cxx:116
 TDynamicSlice.cxx:117
 TDynamicSlice.cxx:118
 TDynamicSlice.cxx:119
 TDynamicSlice.cxx:120
 TDynamicSlice.cxx:121
 TDynamicSlice.cxx:122
 TDynamicSlice.cxx:123
 TDynamicSlice.cxx:124
 TDynamicSlice.cxx:125
 TDynamicSlice.cxx:126
 TDynamicSlice.cxx:127
 TDynamicSlice.cxx:128
 TDynamicSlice.cxx:129
 TDynamicSlice.cxx:130
 TDynamicSlice.cxx:131
 TDynamicSlice.cxx:132
 TDynamicSlice.cxx:133
 TDynamicSlice.cxx:134
 TDynamicSlice.cxx:135
 TDynamicSlice.cxx:136
 TDynamicSlice.cxx:137
 TDynamicSlice.cxx:138
 TDynamicSlice.cxx:139
 TDynamicSlice.cxx:140
 TDynamicSlice.cxx:141
 TDynamicSlice.cxx:142
 TDynamicSlice.cxx:143
 TDynamicSlice.cxx:144
 TDynamicSlice.cxx:145
 TDynamicSlice.cxx:146
 TDynamicSlice.cxx:147
 TDynamicSlice.cxx:148
 TDynamicSlice.cxx:149
 TDynamicSlice.cxx:150
 TDynamicSlice.cxx:151
 TDynamicSlice.cxx:152
 TDynamicSlice.cxx:153
 TDynamicSlice.cxx:154
 TDynamicSlice.cxx:155
 TDynamicSlice.cxx:156
 TDynamicSlice.cxx:157
 TDynamicSlice.cxx:158
 TDynamicSlice.cxx:159
 TDynamicSlice.cxx:160
 TDynamicSlice.cxx:161
 TDynamicSlice.cxx:162
 TDynamicSlice.cxx:163
 TDynamicSlice.cxx:164
 TDynamicSlice.cxx:165
 TDynamicSlice.cxx:166
 TDynamicSlice.cxx:167
 TDynamicSlice.cxx:168
 TDynamicSlice.cxx:169
 TDynamicSlice.cxx:170
 TDynamicSlice.cxx:171
 TDynamicSlice.cxx:172
 TDynamicSlice.cxx:173
 TDynamicSlice.cxx:174
 TDynamicSlice.cxx:175
 TDynamicSlice.cxx:176
 TDynamicSlice.cxx:177
 TDynamicSlice.cxx:178
 TDynamicSlice.cxx:179
 TDynamicSlice.cxx:180
 TDynamicSlice.cxx:181
 TDynamicSlice.cxx:182
 TDynamicSlice.cxx:183
 TDynamicSlice.cxx:184
 TDynamicSlice.cxx:185
 TDynamicSlice.cxx:186
 TDynamicSlice.cxx:187
 TDynamicSlice.cxx:188
 TDynamicSlice.cxx:189
 TDynamicSlice.cxx:190
 TDynamicSlice.cxx:191
 TDynamicSlice.cxx:192
 TDynamicSlice.cxx:193
 TDynamicSlice.cxx:194
 TDynamicSlice.cxx:195
 TDynamicSlice.cxx:196
 TDynamicSlice.cxx:197
 TDynamicSlice.cxx:198
 TDynamicSlice.cxx:199
 TDynamicSlice.cxx:200
 TDynamicSlice.cxx:201
 TDynamicSlice.cxx:202
 TDynamicSlice.cxx:203
 TDynamicSlice.cxx:204
 TDynamicSlice.cxx:205
 TDynamicSlice.cxx:206
 TDynamicSlice.cxx:207
 TDynamicSlice.cxx:208
 TDynamicSlice.cxx:209
 TDynamicSlice.cxx:210
 TDynamicSlice.cxx:211
 TDynamicSlice.cxx:212
 TDynamicSlice.cxx:213
 TDynamicSlice.cxx:214
 TDynamicSlice.cxx:215
 TDynamicSlice.cxx:216
 TDynamicSlice.cxx:217
 TDynamicSlice.cxx:218
 TDynamicSlice.cxx:219
 TDynamicSlice.cxx:220
 TDynamicSlice.cxx:221
 TDynamicSlice.cxx:222
 TDynamicSlice.cxx:223
 TDynamicSlice.cxx:224
 TDynamicSlice.cxx:225
 TDynamicSlice.cxx:226
 TDynamicSlice.cxx:227
 TDynamicSlice.cxx:228
 TDynamicSlice.cxx:229
 TDynamicSlice.cxx:230
 TDynamicSlice.cxx:231
 TDynamicSlice.cxx:232
 TDynamicSlice.cxx:233
 TDynamicSlice.cxx:234
 TDynamicSlice.cxx:235
 TDynamicSlice.cxx:236
 TDynamicSlice.cxx:237
 TDynamicSlice.cxx:238
 TDynamicSlice.cxx:239
 TDynamicSlice.cxx:240
 TDynamicSlice.cxx:241
 TDynamicSlice.cxx:242
 TDynamicSlice.cxx:243
 TDynamicSlice.cxx:244
 TDynamicSlice.cxx:245
 TDynamicSlice.cxx:246
 TDynamicSlice.cxx:247
 TDynamicSlice.cxx:248
 TDynamicSlice.cxx:249
 TDynamicSlice.cxx:250
 TDynamicSlice.cxx:251
 TDynamicSlice.cxx:252
 TDynamicSlice.cxx:253
 TDynamicSlice.cxx:254
 TDynamicSlice.cxx:255
 TDynamicSlice.cxx:256
 TDynamicSlice.cxx:257
 TDynamicSlice.cxx:258
 TDynamicSlice.cxx:259
 TDynamicSlice.cxx:260
 TDynamicSlice.cxx:261
 TDynamicSlice.cxx:262
 TDynamicSlice.cxx:263
 TDynamicSlice.cxx:264
 TDynamicSlice.cxx:265
 TDynamicSlice.cxx:266
 TDynamicSlice.cxx:267
 TDynamicSlice.cxx:268
 TDynamicSlice.cxx:269
 TDynamicSlice.cxx:270
 TDynamicSlice.cxx:271
 TDynamicSlice.cxx:272
 TDynamicSlice.cxx:273
 TDynamicSlice.cxx:274
 TDynamicSlice.cxx:275
 TDynamicSlice.cxx:276
 TDynamicSlice.cxx:277
 TDynamicSlice.cxx:278
 TDynamicSlice.cxx:279
 TDynamicSlice.cxx:280
 TDynamicSlice.cxx:281
 TDynamicSlice.cxx:282
 TDynamicSlice.cxx:283
 TDynamicSlice.cxx:284
 TDynamicSlice.cxx:285
 TDynamicSlice.cxx:286
 TDynamicSlice.cxx:287
 TDynamicSlice.cxx:288
 TDynamicSlice.cxx:289
 TDynamicSlice.cxx:290
 TDynamicSlice.cxx:291
 TDynamicSlice.cxx:292
 TDynamicSlice.cxx:293
 TDynamicSlice.cxx:294
 TDynamicSlice.cxx:295
 TDynamicSlice.cxx:296
 TDynamicSlice.cxx:297
 TDynamicSlice.cxx:298
 TDynamicSlice.cxx:299
 TDynamicSlice.cxx:300
 TDynamicSlice.cxx:301
 TDynamicSlice.cxx:302
 TDynamicSlice.cxx:303
 TDynamicSlice.cxx:304
 TDynamicSlice.cxx:305
 TDynamicSlice.cxx:306
 TDynamicSlice.cxx:307
 TDynamicSlice.cxx:308
 TDynamicSlice.cxx:309
 TDynamicSlice.cxx:310
 TDynamicSlice.cxx:311
 TDynamicSlice.cxx:312
 TDynamicSlice.cxx:313
 TDynamicSlice.cxx:314
 TDynamicSlice.cxx:315
 TDynamicSlice.cxx:316
 TDynamicSlice.cxx:317
 TDynamicSlice.cxx:318
 TDynamicSlice.cxx:319
 TDynamicSlice.cxx:320
 TDynamicSlice.cxx:321
 TDynamicSlice.cxx:322
 TDynamicSlice.cxx:323
 TDynamicSlice.cxx:324
 TDynamicSlice.cxx:325
 TDynamicSlice.cxx:326
 TDynamicSlice.cxx:327
 TDynamicSlice.cxx:328
 TDynamicSlice.cxx:329
 TDynamicSlice.cxx:330
 TDynamicSlice.cxx:331
 TDynamicSlice.cxx:332
 TDynamicSlice.cxx:333
 TDynamicSlice.cxx:334
 TDynamicSlice.cxx:335
 TDynamicSlice.cxx:336
 TDynamicSlice.cxx:337
 TDynamicSlice.cxx:338