AliEveTRDDigits::AliEveTRDDigits(AliEveTRDChamber *p)
:TEveQuadSet("digits", "")
,fParent(p)
- /*, fBoxes(), fData()*/
{
- // Constructor.
+ // Constructor.
SetOwnIds(kTRUE);
gStyle->SetPalette(1, 0);
SetPalette(new TEveRGBAPalette(0, 512));
stk = AliTRDgeometry::GetStack(det),
sec = AliTRDgeometry::GetSector(det),
vid = AliGeomManager::LayerToVolUID(AliGeomManager::kTRD1 + ly, stk + AliTRDgeometry::Nstack() * sec);
-// Float_t threshold = fParent->GetDigitsThreshold();
+ SetNameTitle(Form("digits%03d", det), Form("D-%03d [%02d_%d_%d]", det, sec, stk, ly));
Short_t sig[7]={0,0,0,10,0,0,0};
AliTRDtransform transform(det);
scale = adc[time] < 512 ? adc[time]/512. : 1.;
AddQuad(c.GetY()-0.5*dy, c.GetZ()-0.5*dz*scale, c.GetX(), dy*0.95, dz*scale);
- QuadValue(Float_t(adc[time]));
- QuadId(new TNamed(Form("ADC %d", adc[time]), Form("det[%3d] col[%3d] row[%2d] tb[%2d]", det, col, row, time)));
+ QuadValue(Int_t(adc[time]));
+ QuadId(new TNamed(Form("ADC %d", adc[time]), Form("det[%3d(%02d_%d_%d)] col[%3d] row[%2d] tb[%2d]", det, sec, stk, ly, col, row, time)));
}
}
}
//______________________________________________________________________________
-void AliEveTRDClusters::Load(Char_t *w) const
+void AliEveTRDClusters::Load(const Char_t *w) const
{
Int_t typ = -1;
if(strcmp(w, "hit")==0) typ = 0;
if(!c) return;
Int_t det = c->GetDetector();
- AliEveTRDLoader *loader = NULL;
+ AliEveTRDLoader *loader(NULL);
switch(typ){
+ case 3:
+ loader = new AliEveTRDLoaderSim("MC");
+ if(!loader->Open("galice.root")) delete loader;
+ else{
+ loader->SetDataType(AliEveTRDLoader::kTRDHits | AliEveTRDLoader::kTRDDigits | AliEveTRDLoader::kTRDClusters);
+ break;
+ }
case 0:
loader = new AliEveTRDLoader("Hits");
- if(!loader->Open("TRD.Hits.root")){
- delete loader;
- return;
+ if(!loader->Open("TRD.Hits.root")) delete loader;
+ else{
+ loader->SetDataType(AliEveTRDLoader::kTRDHits);
+ if(typ!=3) break;
}
- loader->SetDataType(AliEveTRDLoader::kTRDHits);
- break;
case 1:
- loader = new AliEveTRDLoader("Digits");
- if(!loader->Open("TRD.Digits.root")){
- delete loader;
- return;
+ if(!loader) loader = new AliEveTRDLoader("Digits");
+ if(!loader->Open("TRD.Digits.root")){
+ if(typ==1) delete loader;
+ } else {
+ loader->SetDataType(AliEveTRDLoader::kTRDDigits);
+ if(typ!=3) break;
}
- loader->SetDataType(AliEveTRDLoader::kTRDDigits);
- break;
case 2:
- loader = new AliEveTRDLoader("Clusters");
- if(!loader->Open("TRD.RecPoints.root")){
- delete loader;
- return;
- }
- loader->SetDataType(AliEveTRDLoader::kTRDClusters);
- break;
- case 3:
- loader = new AliEveTRDLoaderSim("MC");
- if(!loader->Open("galice.root")){
- delete loader;
- return;
+ if(!loader) loader = new AliEveTRDLoader("Clusters");
+ if(!loader->Open("TRD.RecPoints.root")){
+ if(typ ==2) delete loader;
+ } else {
+ loader->SetDataType(AliEveTRDLoader::kTRDClusters);
+ break;
}
- loader->SetDataType(AliEveTRDLoader::kTRDHits | AliEveTRDLoader::kTRDDigits | AliEveTRDLoader::kTRDClusters);
- break;
default: return;
}
+ if(!loader) return;
loader->AddChambers(AliTRDgeometry::GetSector(det),AliTRDgeometry::GetStack(det), AliTRDgeometry::GetLayer(det));
// load first event
AliInfo(Form("gGeo[%p] Closed[%c]", (void*)gGeoManager, gGeoManager->IsClosed()?'y':'n'));
}
SetUserData(trklt);
+ // init tracklet line
+ Int_t sec = AliTRDgeometry::GetSector(trklt->GetDetector());
+ Float_t alpha((0.5+sec)*AliTRDgeometry::GetAlpha()),
+ cphi(TMath::Cos(alpha)),
+ sphi(TMath::Sin(alpha));
Float_t dx;
Float_t x0 = trklt->GetX0();
Float_t y0 = trklt->GetYref(0);
// backup yc - for testing purposes
Float_t yc = c->GetY();
c->SetY(yc-tilt*(c->GetZ()-zt));
- c->GetGlobalXYZ(g);
+
+ // Ben: Temporary(?) fix -> Issue with wrongly set flag "fIsMisaligned" of AliCluster
+ // Changes can be undone ofter the issue with the flag has been solved
+ //c->GetGlobalXYZ(g);
+
+ // The following code for the trasformation local-to-global is just adapted from
+ // AliTRDgeometry::RotateBack(...)
+
+ // tracking to global coordinates transformation
+ Float_t loc[3] = { c->GetX(), c->GetY(), c->GetZ() };
+ g[0] = loc[0] * cphi - loc[1] * sphi;
+ g[1] = loc[0] * sphi + loc[1] * cphi;
+ g[2] = loc[2];
+ // Ben: End of fix
Int_t id = fClusters->SetNextPoint(g[0], g[1], g[2]);
c->SetY(yc);
fClusters->SetPointId(id, new AliTRDcluster(*c));
SetLineColor(kRed);
//SetOwnIds(kTRUE);
- // init tracklet line
- Int_t sec = AliTRDgeometry::GetSector(trklt->GetDetector());
- Double_t alpha = AliTRDgeometry::GetAlpha() * (sec<9 ? sec + .5 : sec - 17.5);
-
//trklt->Fit(kTRUE);
y0 = trklt->GetYfit(0);
dydx = trklt->GetYfit(1);
- Double_t xg = x0 * TMath::Cos(alpha) - y0 * TMath::Sin(alpha);
- Double_t yg = x0 * TMath::Sin(alpha) + y0 * TMath::Cos(alpha);
+ Double_t xg(x0 * cphi - y0 * sphi),
+ yg(x0 * sphi + y0 * cphi);
SetPoint(0, xg, yg, z0);
//SetPoint(0, x0, y0, z0);
x0 -= dx;
y0 -= dydx*dx,
z0 -= dzdx*dx;
- xg = x0 * TMath::Cos(alpha) - y0 * TMath::Sin(alpha);
- yg = x0 * TMath::Sin(alpha) + y0 * TMath::Cos(alpha);
+ xg = x0 * cphi - y0 * sphi;
+ yg = x0 * sphi + y0 * cphi;
SetPoint(1, xg, yg, z0);
//SetPoint(1, x0, y0, z0);
}
//trk->CookPID();
Int_t species = 0; Float_t pid = 0.;
- for(Int_t is=0; is<AliPID::kSPECIES; is++)
+ for(Int_t is=0; is<AliPID::kSPECIES; ++is)
if(trk->GetPID(is) > pid){
pid = trk->GetPID(is);
- species = is;
+ species = (AliPID::EParticleType) is;
}
switch(species){
case AliPID::kElectron:
1.E2*trk->GetPID(2), 1.E2*trk->GetPID(3), 1.E2*trk->GetPID(4), trk->GetLabel()));
if(GetName()){
- char id[6]; strncpy(id, GetName(), 6);
+ char id[6]; snprintf(id, 6, "%s", GetName());
SetName(Form("%s %s", id, AliPID::ParticleName(species)));
}
}
//______________________________________________________________________________
-void AliEveTRDTrack::Load(Char_t *what) const
+void AliEveTRDTrack::Load(const Char_t *what) const
{
- TEveElement::List_ci itrklt=BeginChildren();
+// Spread downwards to tracklets the command "what"
+
+ const AliEveTRDTracklet* trklt(NULL);
+ TEveElement::List_ci itrklt=BeginChildren();
while(itrklt!=EndChildren()){
- dynamic_cast<const AliEveTRDTracklet*>(*itrklt)->Load(what);
+ if((trklt = dynamic_cast<const AliEveTRDTracklet*>(*itrklt))) trklt->Load(what);
itrklt++;
}
}
-
+//______________________________________________________________________________
AliEveTRDTrackletOnline::AliEveTRDTrackletOnline(AliTRDtrackletMCM *tracklet) :
TEveLine(),
fDetector(-1),
Bool_t AliEveTRDmcm::AssignPointer(const char* ptrname)
{
- gROOT->ProcessLine(Form("AliTRDmcmSim* %s = (AliTRDmcmSim *) 0x%x", ptrname, fMCM));
+ gROOT->ProcessLine(Form("AliTRDmcmSim* %s = (AliTRDmcmSim *)%p", ptrname, (void*)fMCM));
return kTRUE;
}