265 {
268
269 for(int i=0;i<selected->GetEntries();i++){
272
279
280
281
282 TEveBoxSet* cones = new TEveBoxSet("ConeSet");
283 cones->Reset(TEveBoxSet::kBT_Cone, kFALSE, 64);
284
285
286 gStyle->SetPalette(-1);
287 TEveRGBAPalette* pal = new TEveRGBAPalette(0, 50);
288 cones->SetPalette(pal);
289
290 TEveVector dir, pos;
291 int direction =
eZ<
s->Z() ? -1 : 1;
292
293 double angle = sqrt(
s->TX()*
s->TX()+
s->TY()*
s->TY());
294 double dtheta = 0.002+ 0.002*angle;
295 double dr = 0.5 + angle;
296
297 double step = 20;
299 int flag_last=0;
302 flag_last=1;
303 }
304 dir.Set(
s->TX(),
s->TY(), (Float_t)1.0);
305 double height =
dz<300?
dz : 300;
306 dir *= direction * height;
307
308
309 double dz2 = direction*
fabs(
dz-height);
310 double l =
dz*sqrt(1+angle*angle);
311 double dr_theta = dtheta*l;
312 double dr_scatt = 0.0136/
p*sqrt(l/3/5700.0)*l;
313 double r = sqrt(dr*dr+dr_theta*dr_theta+dr_scatt*dr_scatt);
314
315 pos.Set(
s->X()+dz2*
s->TX(),
s->Y()+dz2*
s->TY(),
s->Z()+dz2);
316 cones->AddCone(pos, dir,
r);
317 cones->DigitValue(18);
318
319 if(flag_last){
320 dir.Set(
s->TX(),
s->TY(), (Float_t)1.0);
323 pos.Set(
s->X()+dz2*
s->TX(),
s->Y()+dz2*
s->TY(),
s->Z()+dz2);
324 cones->AddCone(pos, dir,
r);
325 cones->DigitValue(18);
326 printf(
"Extention with resolution, track %4d p = %.2lf, resolution = %.1lf um at z = %.0lf (dz = %.0lf)\n",
t->ID(),
p,
r,
s->Z()+direction*
dz,
dz);
327 }
328 }
329 gEve->AddElement(cones);
330 }
331 printf("draw\n");
332 if(redraw) gEve->Redraw3D();
333}
brick dz
Definition: RecDispMC.C:107
Expr< UnaryOp< Fabs< T >, Expr< A, T, D >, T >, T, D > fabs(const Expr< A, T, D > &rhs)
Definition: UnaryOperators.hh:96
TObjArray * GetSelectedTracks(void)
Definition: EdbEDA.h:417
EdbMomentumEstimator * CalcP(EdbTrackP *t, double &p, double &pmin, double &pmax, bool print=kTRUE)
Definition: EdbEDAUtil.C:369
p
Definition: testBGReduction_AllMethods.C:8
void r(int rid=2)
Definition: test.C:201