#include <TTree.h>
#include <TTreeStream.h>
-#include "AliESD.h"
+#include "AliESDEvent.h"
#include "AliAlignObj.h"
#include "AliRieman.h"
#include "AliTrackPointArray.h"
#include "AliTRDCommonParam.h"
#include "AliTRDtracker.h"
#include "AliTRDReconstructor.h"
-#include "AliTRDCalibra.h"
+#include "AliTRDCalibraFillHisto.h"
+
ClassImp(AliTRDtracker)
-const Float_t AliTRDtracker::fgkMinClustersInTrack = 0.5;
-const Float_t AliTRDtracker::fgkLabelFraction = 0.8; // ??
-const Double_t AliTRDtracker::fgkMaxChi2 = 12.0;
+const Float_t AliTRDtracker::fgkMinClustersInTrack = 0.5; //
+const Float_t AliTRDtracker::fgkLabelFraction = 0.8; //
+const Double_t AliTRDtracker::fgkMaxChi2 = 12.0; //
const Double_t AliTRDtracker::fgkMaxSnp = 0.95; // Corresponds to tan = 3
const Double_t AliTRDtracker::fgkMaxStep = 2.0; // Maximal step size in propagation
}
//_____________________________________________________________________________
-AliTRDtracker::AliTRDtracker(const TFile *geomfile)
+AliTRDtracker::AliTRDtracker(const TFile */*geomfile*/)
:AliTracker()
,fHBackfit(0x0)
,fHClSearch(0x0)
//
TDirectory *savedir = gDirectory;
- TFile *in = (TFile *) geomfile;
-
- if (!in->IsOpen()) {
- AliWarning("geometry file is not open!\n");
- AliWarning("FULL TRD geometry and DEFAULT TRD parameter will be used\n");
- }
- else {
- in->cd();
- fGeom = (AliTRDgeometry *) in->Get("TRDgeometry");
- }
- if (!fGeom) {
- AliWarning("Cannot find TRD geometry!\n");
- fGeom = new AliTRDgeometry();
- }
+ fGeom = new AliTRDgeometry();
fGeom->ReadGeoMatrices();
- savedir->cd();
-
for (Int_t geomS = 0; geomS < kTrackingSectors; geomS++) {
Int_t trS = geomS;
fTrSec[trS] = new AliTRDtrackingSector(fGeom,geomS);
for (Int_t icham = 0; icham < AliTRDgeometry::kNcham; icham++) {
+ // Could also go ...
fHoles[icham][trS] = fGeom->IsHole(0,icham,geomS);
}
}
- AliTRDpadPlane *padPlane = AliTRDCommonParam::Instance()->GetPadPlane(0,0);
+ AliTRDpadPlane *padPlane = fGeom->GetPadPlane(0,0);
Float_t tiltAngle = TMath::Abs(padPlane->GetTiltingAngle());
if (tiltAngle < 0.1) {
fNoTilt = kTRUE;
}
- fTimeBinsPerPlane = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+ if (!AliTRDcalibDB::Instance()) {
+ AliFatal("Could not get calibration object");
+ }
+ fTimeBinsPerPlane = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
fDebugStreamer = new TTreeSRedirector("TRDdebug.root");
delete fSeeds;
}
- delete fGeom;
+ if (fGeom) {
+ delete fGeom;
+ }
for (Int_t geomS = 0; geomS < kTrackingSectors; geomS++) {
delete fTrSec[geomS];
Int_t ichamber = fGeom->GetChamber(lid);
Int_t iplan = fGeom->GetPlane(lid);
- AliAlignObj::ELayerID iLayer = AliAlignObj::kTRD1;
+ AliGeomManager::ELayerID iLayer = AliGeomManager::kTRD1;
switch (iplan) {
case 0:
- iLayer = AliAlignObj::kTRD1;
+ iLayer = AliGeomManager::kTRD1;
break;
case 1:
- iLayer = AliAlignObj::kTRD2;
+ iLayer = AliGeomManager::kTRD2;
break;
case 2:
- iLayer = AliAlignObj::kTRD3;
+ iLayer = AliGeomManager::kTRD3;
break;
case 3:
- iLayer = AliAlignObj::kTRD4;
+ iLayer = AliGeomManager::kTRD4;
break;
case 4:
- iLayer = AliAlignObj::kTRD5;
+ iLayer = AliGeomManager::kTRD5;
break;
case 5:
- iLayer = AliAlignObj::kTRD6;
+ iLayer = AliGeomManager::kTRD6;
break;
};
Int_t modId = isector * fGeom->Ncham() + ichamber;
- UShort_t volid = AliAlignObj::LayerToVolUID(iLayer,modId);
+ UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,modId);
return volid;
//
Int_t modId = 0;
- AliAlignObj::ELayerID layerId = AliAlignObj::VolUIDToLayer(gid,modId);
+ AliGeomManager::ELayerID layerId = AliGeomManager::VolUIDToLayer(gid,modId);
Int_t isector = modId / fGeom->Ncham();
Int_t ichamber = modId % fGeom->Ncham();
Int_t iLayer = -1;
switch (layerId) {
- case AliAlignObj::kTRD1:
+ case AliGeomManager::kTRD1:
iLayer = 0;
break;
- case AliAlignObj::kTRD2:
+ case AliGeomManager::kTRD2:
iLayer = 1;
break;
- case AliAlignObj::kTRD3:
+ case AliGeomManager::kTRD3:
iLayer = 2;
break;
- case AliAlignObj::kTRD4:
+ case AliGeomManager::kTRD4:
iLayer = 3;
break;
- case AliAlignObj::kTRD5:
+ case AliGeomManager::kTRD5:
iLayer = 4;
break;
- case AliAlignObj::kTRD6:
+ case AliGeomManager::kTRD6:
iLayer = 5;
break;
default:
Bool_t AliTRDtracker::Transform(AliTRDcluster *cluster)
{
//
- // Transform something ... whatever ...
+ // Transform from cluster system to tracking system
//
// Magic constants for geo manager transformation
const Double_t kX0shift = 2.52;
- const Double_t kX0shift5 = 3.05;
//
// Apply alignment and calibration to transform cluster
Double_t vdrift = AliTRDcalibDB::Instance()->GetVdrift(cluster->GetDetector(),0,0);
Double_t exB = AliTRDcalibDB::Instance()->GetOmegaTau(vdrift,-AliTracker::GetBz()*0.1);
- AliTRDCommonParam *commonParam = AliTRDCommonParam::Instance();
- AliTRDpadPlane *padPlane = commonParam->GetPadPlane(plane,chamber);
+ AliTRDpadPlane *padPlane = fGeom->GetPadPlane(plane,chamber);
Double_t zshiftIdeal = 0.5*(padPlane->GetRow0()+padPlane->GetRowEnd());
Double_t localPos[3];
Double_t localPosTracker[3];
cluster->SetY(cluster->GetY() - driftX*exB);
Double_t xplane = (Double_t) AliTRDgeometry::GetTime0(plane);
- cluster->SetX(xplane- cluster->GetX());
+ cluster->SetX(xplane - cluster->GetX());
- TGeoHMatrix *matrix = fGeom->GetCorrectionMatrix(cluster->GetDetector());
+ TGeoHMatrix *matrix = fGeom->GetCorrectionMatrix(cluster->GetDetector());
if (!matrix) {
// No matrix found - if somebody used geometry with holes
AliError("Invalid Geometry - Default Geometry used\n");
<< "\n";
}
- if (plane == 5) {
- cluster->SetX(localPosTracker[0]+kX0shift5);
- }
- else {
- cluster->SetX(localPosTracker[0]+kX0shift);
- }
-
+ cluster->SetX(localPosTracker[0]+kX0shift);
cluster->SetY(localPosTracker[1]);
cluster->SetZ(localPosTracker[2]);
}
//_____________________________________________________________________________
-Int_t AliTRDtracker::Clusters2Tracks(AliESD *event)
+Int_t AliTRDtracker::Clusters2Tracks(AliESDEvent *event)
{
//
// Finds tracks within the TRD. The ESD event is expected to contain seeds
}
//_____________________________________________________________________________
-Int_t AliTRDtracker::PropagateBack(AliESD *event)
+Int_t AliTRDtracker::PropagateBack(AliESDEvent *event)
{
//
// Gets seeds from ESD event. The seeds are AliTPCtrack's found and
}
//_____________________________________________________________________________
-Int_t AliTRDtracker::RefitInward(AliESD *event)
+Int_t AliTRDtracker::RefitInward(AliESDEvent *event)
{
//
// Refits tracks within the TRD. The ESD event is expected to contain seeds
AliTRDtracklet tracklet;
// Calibration fill 2D
- AliTRDCalibra *calibra = AliTRDCalibra::Instance();
+ AliTRDCalibraFillHisto *calibra = AliTRDCalibraFillHisto::Instance();
if (!calibra) {
AliInfo("Could not get Calibra instance\n");
}
}
//_____________________________________________________________________________
-void AliTRDtracker::MakeSeedsMI(Int_t /*inner*/, Int_t /*outer*/, AliESD *esd)
+void AliTRDtracker::MakeSeedsMI(Int_t /*inner*/, Int_t /*outer*/, AliESDEvent *esd)
{
//
// Creates seeds using clusters between position inner plane and outer plane
}
}
- AliTRDpadPlane *padPlane = AliTRDCommonParam::Instance()->GetPadPlane(0,0);
+ AliTRDpadPlane *padPlane = fGeom->GetPadPlane(0,0);
Double_t h01 = TMath::Tan(-TMath::Pi() / 180.0 * padPlane->GetTiltingAngle());
Double_t hL[6]; // Tilting angle
Double_t xcl[6]; // X - position of reference cluster
Double_t global[3];
fGeom->RotateBack(idet,local,global);
p.SetXYZ(global[0],global[1],global[2]);
- AliAlignObj::ELayerID iLayer = AliAlignObj::kTRD1;
+ AliGeomManager::ELayerID iLayer = AliGeomManager::kTRD1;
switch (iplan) {
case 0:
- iLayer = AliAlignObj::kTRD1;
+ iLayer = AliGeomManager::kTRD1;
break;
case 1:
- iLayer = AliAlignObj::kTRD2;
+ iLayer = AliGeomManager::kTRD2;
break;
case 2:
- iLayer = AliAlignObj::kTRD3;
+ iLayer = AliGeomManager::kTRD3;
break;
case 3:
- iLayer = AliAlignObj::kTRD4;
+ iLayer = AliGeomManager::kTRD4;
break;
case 4:
- iLayer = AliAlignObj::kTRD5;
+ iLayer = AliGeomManager::kTRD5;
break;
case 5:
- iLayer = AliAlignObj::kTRD6;
+ iLayer = AliGeomManager::kTRD6;
break;
};
Int_t modId = isector * fGeom->Ncham() + ichamber;
- UShort_t volid = AliAlignObj::LayerToVolUID(iLayer,modId);
+ UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,modId);
p.SetVolumeID(volid);
return kTRUE;
Double_t *zc = new Double_t[kNchambers];
Double_t *zmax = new Double_t[kNchambers];
Double_t *zmaxsensitive = new Double_t[kNchambers];
-
- AliTRDCommonParam *commonParam = AliTRDCommonParam::Instance();
- if (!commonParam) {
- AliErrorGeneral("AliTRDtrackingSector::Ctor"
- ,"Could not get common parameters\n");
- return;
- }
for (Int_t plane = 0; plane < AliTRDgeometry::Nplan(); plane++) {
ymax = fGeom->GetChamberWidth(plane) / 2.0;
- padPlane = commonParam->GetPadPlane(plane,0);
+ padPlane = fGeom->GetPadPlane(plane,0);
ymaxsensitive = (padPlane->GetColSize(1) * padPlane->GetNcols() - 4.0) / 2.0;
for (Int_t ch = 0; ch < kNchambers; ch++) {
zmax[ch] = fGeom->GetChamberLength(plane,ch) / 2.0;
Float_t pad = padPlane->GetRowSize(1);
- Float_t row0 = commonParam->GetRow0(plane,ch,0);
- Int_t nPads = commonParam->GetRowMax(plane,ch,0);
+ Float_t row0 = fGeom->GetRow0(plane,ch,0);
+ Int_t nPads = fGeom->GetRowMax(plane,ch,0);
zmaxsensitive[ch] = Float_t(nPads) * pad / 2.0;
zc[ch] = -(pad * nPads) / 2.0 + row0;
}
dx = AliTRDcalibDB::Instance()->GetVdrift(0,0,0)
- / commonParam->GetSamplingFrequency();
+ / AliTRDCommonParam::Instance()->GetSamplingFrequency();
rho = 0.00295 * 0.85; //????
radLength = 11.0;
Int_t det = c->GetDetector();
Int_t plane = fGeom->GetPlane(det);
- AliTRDpadPlane *padPlane = AliTRDCommonParam::Instance()->GetPadPlane(plane,0);
+ AliTRDpadPlane *padPlane = fGeom->GetPadPlane(plane,0);
Double_t h01 = TMath::Tan(-TMath::Pi() / 180.0 * padPlane->GetTiltingAngle());
if (fNoTilt) {
AliError(Form("Wrong plane %d",iPlane));
continue;
}
- Int_t iSlice = tb * AliESDtrack::kNSlice / AliTRDtrack::kNtimeBins;
+ Int_t iSlice = tb * AliESDtrack::kNSlice
+ / AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
if (iSlice >= AliESDtrack::kNSlice) {
AliError(Form("Wrong slice %d",iSlice));
continue;