}
}
///////////////////////////////////////////////////////////////////////////
+AliSignal* AliDevice::GetHit(TString name) const
+{
+// Provide the AliSignal object registered as hit with the specified name.
+// Note : The first hit encountered with the specified name will be provided.
+
+ if (!fHits) return 0;
+
+ TString hitname;
+ Int_t nhits=GetNhits();
+ for (Int_t i=0; i<nhits; i++)
+ {
+ AliSignal* sx=(AliSignal*)fHits->At(i);
+ if (sx)
+ {
+ hitname=sx->GetName();
+ if (hitname == name) return sx;
+ }
+ }
+
+ return 0; // No matching name found
+}
+///////////////////////////////////////////////////////////////////////////
AliSignal* AliDevice::GetIdHit(Int_t id) const
{
// Return the hit with unique identifier "id".
}
}
///////////////////////////////////////////////////////////////////////////
-void AliDevice::Data(TString f) const
+void AliDevice::Data(TString f,TString u) const
{
// Print the device and all registered hit info according to the specified
-// coordinate frame.
- AliSignal::Data(f);
+// coordinate frame f.
+//
+// The string argument "u" allows to choose between different angular units
+// in case e.g. a spherical frame is selected.
+// u = "rad" : angles provided in radians
+// "deg" : angles provided in degrees
+//
+// The defaults are f="car" and u="rad".
+
+ AliSignal::Data(f,u);
Int_t nhits=GetNhits();
if (nhits)
{
break; // go for next hit
}
- if (mode==-1 && s->GetSignal(idx,mcal) < ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
- if (mode==1 && s->GetSignal(idx,mcal) > ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
+ if (mode==-1 && s->GetSignal(idx,mcal) <= ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
+ if (mode==1 && s->GetSignal(idx,mcal) >= ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
nord++;
for (Int_t k=nord-1; k>j; k--) // create empty position
fOrdered->AddAt(fOrdered->At(k-1),k);
}
fOrdered->AddAt(s,j); // put hit at empty position
- break; // go for next matrix module
+ break; // go for next hit
}
}
return fOrdered;
break; // go for next hit
}
- if (mode==-1 && s->GetSignal(idx,mcal) < ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
- if (mode==1 && s->GetSignal(idx,mcal) > ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
+ if (mode==-1 && s->GetSignal(idx,mcal) <= ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
+ if (mode==1 && s->GetSignal(idx,mcal) >= ((AliSignal*)fOrdered->At(j))->GetSignal(idx,mcal)) continue;
nord++;
for (Int_t k=nord-1; k>j; k--) // create empty position
fOrdered->AddAt(fOrdered->At(k-1),k);
}
fOrdered->AddAt(s,j); // put hit at empty position
- break; // go for next matrix module
+ break; // go for next hit
}
}
return fOrdered;
if (scale<0)
{
Float_t vmin,vmax;
- GetExtremes(vmin,vmax,idx,hits);
+ GetExtremes(vmin,vmax,idx,hits,mode);
sigmax=fabs(vmax);
if (fabs(vmin)>sigmax) sigmax=fabs(vmin);
}
}
}
sig=sx->GetSignal(idx,mode);
+
+ // Skip dead signals
+ if (fabs(sig) <= 0.) continue;
+
TPolyMarker3D* m=new TPolyMarker3D();
m->SetMarkerStyle(8);
m->SetMarkerColor(mcol);
if (scale<0)
{
Float_t vmin,vmax;
- GetExtremes(vmin,vmax,name,hits);
+ GetExtremes(vmin,vmax,name,hits,mode);
sigmax=fabs(vmax);
if (fabs(vmin)>sigmax) sigmax=fabs(vmin);
}
}
}
sig=sx->GetSignal(idx,mode);
+
+ // Skip dead signals
+ if (fabs(sig) <= 0.) continue;
+
TPolyMarker3D* m=new TPolyMarker3D();
m->SetMarkerStyle(8);
m->SetMarkerColor(mcol);