X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDtrackingChamber.cxx;h=a432ae79ac3178ba2b14ba22c1a1ccfeec665983;hb=bca5db015a73eeba35a687329a3a9eeb3c5b2e57;hp=5de3712b7b0f74c183275f02b10099814ec725cd;hpb=b0a48c4d0c3a8411792e5741b83f97456a66d277;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDtrackingChamber.cxx b/TRD/AliTRDtrackingChamber.cxx index 5de3712b7b0..a432ae79ac3 100644 --- a/TRD/AliTRDtrackingChamber.cxx +++ b/TRD/AliTRDtrackingChamber.cxx @@ -37,84 +37,122 @@ #include "AliTRDgeometry.h" #include "AliTRDpadPlane.h" #include "AliTRDcalibDB.h" +#include "AliTRDCommonParam.h" #include "Cal/AliTRDCalDet.h" #include "Cal/AliTRDCalROC.h" ClassImp(AliTRDtrackingChamber) //_______________________________________________________ -AliTRDtrackingChamber::AliTRDtrackingChamber(Int_t det) : - fDetector(det) +AliTRDtrackingChamber::AliTRDtrackingChamber() + :TObject() + ,fDetector(-1) ,fX0(0.) + // ,fExB(0.) + // ,fVD(0.) + // ,fT0(0.) + // ,fS2PRF(0.) + // ,fDiffL(0.) + // ,fDiffT(0.) {} //_______________________________________________________ void AliTRDtrackingChamber::Clear(const Option_t *opt) { - for(Int_t itb=0; itbGetPadTime()].InsertCluster(c, index); -} - -//_______________________________________________________ -Bool_t AliTRDtrackingChamber::Build(AliTRDgeometry *geo, const AliTRDCalDet *cal, Bool_t hlt) +Bool_t AliTRDtrackingChamber::Build(AliTRDgeometry *const geo, Bool_t hlt) { // Init chamber and all time bins (AliTRDchamberTimeBin) // Calculates radial position of the chamber based on // radial positions of the time bins (calibration/alignment aware) // - Int_t stack = geo->GetStack(fDetector); - Int_t layer = geo->GetLayer(fDetector); + if(fDetector < 0 || fDetector >= AliTRDgeometry::kNdet){ + AliWarning(Form("Detector index not set correctly to %d", fDetector)); + return kFALSE; + } + + Int_t stack = AliTRDgeometry::GetStack(fDetector); + Int_t layer = AliTRDgeometry::GetLayer(fDetector); AliTRDpadPlane *pp = geo->GetPadPlane(layer, stack); Double_t zl = pp->GetRow0ROC() - pp->GetRowEndROC(); Double_t z0 = geo->GetRow0(layer, stack, 0) - zl; Int_t nrows = pp->GetNrows(); Int_t index[50], jtb = 0; - for(Int_t itb=0; itbGetValue(fDetector); + AliTRDcalibDB *calib = AliTRDcalibDB::Instance(); + Float_t t0; if(!hlt){ - Double_t mean = 0.0; - AliTRDCalROC *roc = AliTRDcalibDB::Instance()->GetT0ROC(fDetector); - for(Int_t k = 0; kGetNchannels(); k++) mean += roc->GetValue(k); - mean /= roc->GetNchannels(); - t0 = (Int_t)(cal->GetValue(fDetector) + mean); + t0 = calib->GetT0Average(fDetector); + }else{ + t0 = calib->GetT0Det()->GetValue(fDetector); } + // fVD = calib->GetVdriftAverage(fDetector); + // fS2PRF = calib->GetPRFROC(fDetector)->GetMean(); fS2PRF *= fS2PRF; + // fExB = AliTRDCommonParam::Instance()->GetOmegaTau(fVD); + // AliTRDCommonParam::Instance()->GetDiffCoeff(fDiffL, fDiffT, fVD); + // ESTIMATE POSITION OF PAD PLANE FOR THIS CHAMBER + //fTB[Int_t(t0)].SetT0(); + Double_t x0 = fTB[index[0]].GetX(); + Double_t x1 = fTB[index[1]].GetX(); + Double_t dx = (x0 - x1)/(index[1] - index[0]); fX0 = x0 + dx*(index[0] - t0); return kTRUE; } - + //_______________________________________________________ Int_t AliTRDtrackingChamber::GetNClusters() const { +// Basic loop method // Returns number of clusters in chamber // Int_t n = 0; - for(Int_t itb=0; itbGetColPos(nCols - 1 - icnt) + binlength/2; } @@ -270,7 +308,7 @@ Bool_t AliTRDtrackingChamber::GetSeedingLayer(AliTRDchamberTimeBin *&fakeLayer, Int_t col, row, lower, lower1, upper, upper1; for(Int_t ib = 0; ib < nCont; ib++){ if(nCandidates >= AliTRDtrackerV1::kMaxTracksStack){ - printf("Number of seed candidates %d exceeded maximum allowed per stack %d", nCandidates, AliTRDtrackerV1::kMaxTracksStack); + AliDebug(1, Form("Number of seed candidates %d exceeded maximum allowed per stack %d", nCandidates, AliTRDtrackerV1::kMaxTracksStack)); break; } // Positions @@ -321,7 +359,8 @@ Bool_t AliTRDtrackingChamber::GetSeedingLayer(AliTRDchamberTimeBin *&fakeLayer, new(fakeLayer) AliTRDchamberTimeBin(layer, stack, sector, z0, zl); fakeLayer->SetReconstructor(rec); - AliTRDcluster *cluster = 0x0; + fakeLayer->SetNRows(nRows); + fakeLayer->SetOwner(kFALSE); if(nCandidates){ UInt_t fakeIndex = 0; for(Int_t ican = 0; ican < nCandidates; ican++){ @@ -329,7 +368,7 @@ Bool_t AliTRDtrackingChamber::GetSeedingLayer(AliTRDchamberTimeBin *&fakeLayer, col = cand[ican] % nCols; //temporary Int_t n = 0; Double_t x = 0., y = 0., z = 0.; - for(int itb=0; itbInsertCluster(cluster, fakeIndex++); + fakeLayer->InsertCluster(new AliTRDcluster(fDetector, 0., pos, sig, NULL, 3, signal, col, row, 0, 0, 0., 0), fakeIndex++); } } - fakeLayer->SetNRows(nRows); - fakeLayer->SetOwner(); fakeLayer->BuildIndices(); - //fakeLayer->PrintClusters(); + //fakeLayer->Print(); - if(rec->GetStreamLevel(AliTRDReconstructor::kTracker) >= 3){ + if(rec->GetRecoParam()->GetStreamLevel(AliTRDrecoParam::kTracker) >= 3){ //TMatrixD hist(nRows, nCols); //for(Int_t i = 0; i < nRows; i++) // for(Int_t j = 0; j < nCols; j++) // hist(i,j) = histogram[i][j]; - TTreeSRedirector &cstreamer = *AliTRDtrackerV1::DebugStreamer(); + TTreeSRedirector &cstreamer = *rec->GetDebugStream(AliTRDrecoParam::kTracker); cstreamer << "GetSeedingLayer" << "layer=" << layer << "ymin=" << ymin @@ -375,3 +412,28 @@ Bool_t AliTRDtrackingChamber::GetSeedingLayer(AliTRDchamberTimeBin *&fakeLayer, return kTRUE; } + +//_______________________________________________________ +void AliTRDtrackingChamber::Print(Option_t *opt) const +{ + // Print the chamber status + if(!GetNClusters()) return; + AliInfo(Form("fDetector = %d", fDetector)); + AliInfo(Form("fX0 = %7.3f", fX0)); + const AliTRDchamberTimeBin *itb = &fTB[0]; + for(Int_t jtb=0; jtb