X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDseedV1.cxx;h=3208df689749eeb4e53153e8e8ab62586d566833;hb=7954133b6f4d4aa9eb4c8ff0c4c5d515d4c22988;hp=3845362f913a654eb3bee57a924e9d68b926f20b;hpb=a0bb56159a7ce3ac619575e51cb43cf9d9a6b3a7;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDseedV1.cxx b/TRD/AliTRDseedV1.cxx index 3845362f913..3208df68974 100644 --- a/TRD/AliTRDseedV1.cxx +++ b/TRD/AliTRDseedV1.cxx @@ -258,7 +258,7 @@ void AliTRDseedV1::Init(const AliRieman *rieman) //____________________________________________________________ -Bool_t AliTRDseedV1::Init(AliTRDtrackV1 *track) +Bool_t AliTRDseedV1::Init(const AliTRDtrackV1 *track) { // Initialize this tracklet using the track information // @@ -495,12 +495,48 @@ Float_t AliTRDseedV1::GetCharge(Bool_t useOutliers) const AliTRDcluster *c(NULL); Float_t qt(0.); for(int ic=0; icIsInChamber() && !useOutliers) continue; + if(!c->IsInChamber() && !useOutliers) continue; qt += TMath::Abs(c->GetQ()); } return qt; } +//____________________________________________________________________ +Int_t AliTRDseedV1::GetChargeGaps(Float_t sz[kNtb], Float_t pos[kNtb], Int_t isz[kNtb]) const +{ +// Find number, size and position of charge gaps (consecutive missing time bins). +// Returns the number of gaps and fills their size in input array "sz" and position in array "pos" + + Bool_t gap(kFALSE); + Int_t n(0); + Int_t ipos[kNtb]; memset(isz, 0, kNtb*sizeof(Int_t));memset(ipos, 0, kNtb*sizeof(Int_t)); + for(int ic(0); icGetSamplingFrequency(); + fake.SetPadTime(ipos[igap]); + pos[igap] = fake.GetXloc(fT0, fVD); + if(isz[igap]>1){ + fake.SetPadTime(ipos[igap]-isz[igap]+1); + pos[igap] += fake.GetXloc(fT0, fVD); + pos[igap] /= 2.; + } + } + return n; +} + + //____________________________________________________________________ Bool_t AliTRDseedV1::GetEstimatedCrossPoint(Float_t &x, Float_t &z) const { @@ -548,12 +584,12 @@ Float_t AliTRDseedV1::GetQperTB(Int_t tb) const // // Charge of the clusters at timebin // - Float_t Q = 0; + Float_t q = 0; if(fClusters[tb] /*&& fClusters[tb]->IsInChamber()*/) - Q += TMath::Abs(fClusters[tb]->GetQ()); + q += TMath::Abs(fClusters[tb]->GetQ()); if(fClusters[tb+kNtb] /*&& fClusters[tb+kNtb]->IsInChamber()*/) - Q += TMath::Abs(fClusters[tb+kNtb]->GetQ()); - return Q/TMath::Sqrt(1. + fYref[1]*fYref[1] + fZref[1]*fZref[1]); + q += TMath::Abs(fClusters[tb+kNtb]->GetQ()); + return q/TMath::Sqrt(1. + fYref[1]*fYref[1] + fZref[1]*fZref[1]); } //____________________________________________________________________ @@ -1018,6 +1054,8 @@ Bool_t AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_ // Parameters // - chamber : pointer to tracking chamber container used to search the tracklet // - tilt : switch for tilt correction during road building [default true] +// - chgPos : mark same[kFALSE] and opposite[kTRUE] sign tracks with respect to Bz field sign [default true] +// - ev : event number for debug purposes [default = -1] // Output // - true : if tracklet found successfully. Failure can happend because of the following: // - @@ -1075,13 +1113,13 @@ Bool_t AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_ if(fkReconstructor->IsHLT()) cp.SetRPhiMethod(AliTRDcluster::kCOG); if(!IsCalibrated()) Calibrate(); - Int_t kroadyShift(0); +/* Int_t kroadyShift(0); Float_t bz(AliTrackerBase::GetBz()); if(TMath::Abs(bz)>2.){ if(bz<0.) kroadyShift = chgPos ? +1 : -1; else kroadyShift = chgPos ? -1 : +1; - } - AliDebug(4, Form("\n syTrk[cm]=%4.2f dydxTrk[deg]=%+6.2f rs[%d] Chg[%c] rY[cm]=%4.2f rZ[cm]=%5.2f TC[%c]", syRef, TMath::ATan(fYref[1])*TMath::RadToDeg(), kroadyShift, chgPos?'+':'-', kroady, kroadz, tilt?'y':'n')); + }*/ + AliDebug(4, Form("\n syTrk[cm]=%4.2f dydxTrk[deg]=%+6.2f Chg[%c] rY[cm]=%4.2f rZ[cm]=%5.2f TC[%c]", syRef, TMath::ATan(fYref[1])*TMath::RadToDeg(), chgPos?'+':'-', kroady, kroadz, tilt?'y':'n')); Double_t phiTrk(TMath::ATan(fYref[1])), thtTrk(TMath::ATan(fZref[1])); @@ -2033,6 +2071,9 @@ Bool_t AliTRDseedV1::FitRobust(Bool_t chg) } else { kScalePulls = attach->GetScaleCov();//*lyScaler; } + // Retrieve chamber status + SetChmbGood(calibration->IsChamberGood(fDet)); + if(!IsChmbGood()) kScalePulls*=10.; } Double_t xc[kNclusters], yc[kNclusters], sy[kNclusters]; Int_t n(0), // clusters used in fit