X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDtracker.cxx;h=120b345f0edbe89395f47f1837f6981bff622c6c;hb=af885e0fc45eeab1177d3d34f858ccd8836787fb;hp=fbe984d783501f435598b4db255880e3e7d5ed67;hpb=55ac2228582e667666d2625c748bd24afe4e90ba;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDtracker.cxx b/TRD/AliTRDtracker.cxx index fbe984d7835..120b345f0ed 100644 --- a/TRD/AliTRDtracker.cxx +++ b/TRD/AliTRDtracker.cxx @@ -39,7 +39,7 @@ #include #include -#include "AliESD.h" +#include "AliESDEvent.h" #include "AliAlignObj.h" #include "AliRieman.h" #include "AliTrackPointArray.h" @@ -54,12 +54,13 @@ #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 @@ -141,7 +142,7 @@ AliTRDtracker::AliTRDtracker(const AliTRDtracker &t) } //_____________________________________________________________________________ -AliTRDtracker::AliTRDtracker(const TFile *geomfile) +AliTRDtracker::AliTRDtracker(const TFile */*geomfile*/) :AliTracker() ,fHBackfit(0x0) ,fHClSearch(0x0) @@ -172,40 +173,29 @@ AliTRDtracker::AliTRDtracker(const TFile *geomfile) // 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"); @@ -237,7 +227,9 @@ AliTRDtracker::~AliTRDtracker() delete fSeeds; } - delete fGeom; + if (fGeom) { + delete fGeom; + } for (Int_t geomS = 0; geomS < kTrackingSectors; geomS++) { delete fTrSec[geomS]; @@ -260,30 +252,30 @@ Int_t AliTRDtracker::LocalToGlobalID(Int_t lid) 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; @@ -297,29 +289,29 @@ Int_t AliTRDtracker::GlobalToLocalID(Int_t gid) // 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: @@ -340,12 +332,11 @@ Int_t AliTRDtracker::GlobalToLocalID(Int_t gid) 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 @@ -364,8 +355,7 @@ Bool_t AliTRDtracker::Transform(AliTRDcluster *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]; @@ -375,9 +365,9 @@ Bool_t AliTRDtracker::Transform(AliTRDcluster *cluster) 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"); @@ -399,13 +389,7 @@ Bool_t AliTRDtracker::Transform(AliTRDcluster *cluster) << "\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]); @@ -586,7 +570,7 @@ Int_t AliTRDtracker::GetLastPlane(AliTRDtrack *track) } //_____________________________________________________________________________ -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 @@ -645,7 +629,7 @@ Int_t AliTRDtracker::Clusters2Tracks(AliESD *event) } //_____________________________________________________________________________ -Int_t AliTRDtracker::PropagateBack(AliESD *event) +Int_t AliTRDtracker::PropagateBack(AliESDEvent *event) { // // Gets seeds from ESD event. The seeds are AliTPCtrack's found and @@ -930,7 +914,7 @@ Int_t AliTRDtracker::PropagateBack(AliESD *event) } //_____________________________________________________________________________ -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 @@ -1214,7 +1198,7 @@ Int_t AliTRDtracker::FollowBackProlongation(AliTRDtrack &t) AliTRDtracklet tracklet; // Calibration fill 2D - AliTRDCalibra *calibra = AliTRDCalibra::Instance(); + AliTRDCalibraFillHisto *calibra = AliTRDCalibraFillHisto::Instance(); if (!calibra) { AliInfo("Could not get Calibra instance\n"); } @@ -1521,7 +1505,7 @@ void AliTRDtracker::UnloadClusters() } //_____________________________________________________________________________ -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 @@ -1574,7 +1558,7 @@ void AliTRDtracker::MakeSeedsMI(Int_t /*inner*/, Int_t /*outer*/, AliESD *esd) } } - 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 @@ -2754,29 +2738,29 @@ Bool_t AliTRDtracker::GetTrackPoint(Int_t index, AliTrackPoint &p) const 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; @@ -3038,31 +3022,24 @@ AliTRDtracker::AliTRDtrackingSector 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; @@ -3449,7 +3426,7 @@ Double_t AliTRDtracker::GetTiltFactor(const AliTRDcluster *c) 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) { @@ -3508,7 +3485,8 @@ void AliTRDtracker::CookdEdxTimBin(AliTRDtrack &TRDtrack) 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;