From 803dc399b238096dcf58224967bf3ba25a3efcd4 Mon Sep 17 00:00:00 2001 From: abercuci Date: Fri, 4 Nov 2011 08:42:47 +0000 Subject: [PATCH] update TRD code for PbPb 2011 - use new alignment/roads in tracking (Johannes/Dariusz/Alex) - use new ExB/v drift calibration in reconstruction (Raphaelle/Theo/Alex) - use chamber status in tracking and save it in ESD track (Raphaelle/Alex) - use same/opposite sign track selection in AttachClusters (Alex) - remove updates of tracklet reference after track update by TRD (Alex) --- .../Align/Data/Run151536_999999999_v3_s0.root | Bin 0 -> 17877 bytes .../TrkAttach/Run151536_999999999_v0_s1.root | Bin 0 -> 18039 bytes TRD/AliTRDseedV1.cxx | 11 +++++--- TRD/AliTRDseedV1.h | 3 +++ TRD/AliTRDtrackV1.cxx | 5 +++- TRD/AliTRDtrackerV1.cxx | 11 ++++++-- TRD/AliTRDtransform.cxx | 16 +++++++++-- TRD/AliTRDtransform.h | 2 ++ TRD/Cal/AliTRDCalTrkAttach.cxx | 25 +++++++++--------- TRD/Cal/AliTRDCalTrkAttach.h | 5 +++- TRD/Cal/AliTRDmakeTrkDB.C | 6 ++--- 11 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 OCDB/TRD/Align/Data/Run151536_999999999_v3_s0.root create mode 100644 OCDB/TRD/Calib/TrkAttach/Run151536_999999999_v0_s1.root diff --git a/OCDB/TRD/Align/Data/Run151536_999999999_v3_s0.root b/OCDB/TRD/Align/Data/Run151536_999999999_v3_s0.root new file mode 100644 index 0000000000000000000000000000000000000000..e0079e64a7d86046ddd8dd74d470e37d166f4341 GIT binary patch literal 17877 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 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 +2035,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 diff --git a/TRD/AliTRDseedV1.h b/TRD/AliTRDseedV1.h index 67350b7ea0d..d83427f1c05 100644 --- a/TRD/AliTRDseedV1.h +++ b/TRD/AliTRDseedV1.h @@ -66,6 +66,7 @@ public: ,kKink = BIT(18) // kink prolongation tracklet ,kStandAlone = BIT(19) // tracklet build during stand alone track finding ,kPrimary = BIT(20) // tracklet from a primary track candidate + ,kChmbGood = BIT(21) // status of the detector from calibration view point }; enum ETRDtrackletError { // up to 8 bits @@ -96,6 +97,7 @@ public: void Init(const AliRieman *fit); Bool_t IsEqual(const TObject *inTracklet) const; Bool_t IsCalibrated() const { return TestBit(kCalib);} + Bool_t IsChmbGood() const { return TestBit(kChmbGood);} Bool_t IsOwner() const { return TestBit(kOwner);} Bool_t IsKink() const { return TestBit(kKink);} Bool_t IsPrimary() const { return TestBit(kPrimary);} @@ -178,6 +180,7 @@ public: void Reset(Option_t *opt=""); void SetC(Float_t c, Int_t typ=0) { fC[typ] = c;} + void SetChmbGood(Bool_t k = kTRUE){ SetBit(kChmbGood, k);} void SetChi2(Float_t chi2) { fChi2 = chi2;} inline void SetCovRef(const Double_t *cov); void SetErrorMsg(ETRDtrackletError err) { SETBIT(fErrorMsg, err);} diff --git a/TRD/AliTRDtrackV1.cxx b/TRD/AliTRDtrackV1.cxx index 38148d07442..28f01efd64f 100644 --- a/TRD/AliTRDtrackV1.cxx +++ b/TRD/AliTRDtrackV1.cxx @@ -882,8 +882,11 @@ void AliTRDtrackV1::UpdateESDtrack(AliESDtrack *track) // first implementation store no. of time bins filled in tracklet (5bits see "y" bits) and // no. of double clusters in case of pad row cross (4bits see "x" bits) // bit map for tracklet quality xxxxyyyyy + // 27.10.11 A.Bercuci + // add chamber status bit "z" bit + // bit map for tracklet quality zxxxxyyyyy Int_t nCross(fTracklet[ip]->IsRowCross()?fTracklet[ip]->GetTBcross():0); - spd = Double_t(fTracklet[ip]->GetTBoccupancy() | (nCross<<5)); + spd = Double_t(fTracklet[ip]->GetTBoccupancy() | (nCross<<5) | (fTracklet[ip]->IsChmbGood()<<9)); track->SetTRDmomentum(p, ip, &spd); track->SetTRDslice(fTracklet[ip]->GetdQdl(), ip, 0); // Set Summed dEdx into the first slice } diff --git a/TRD/AliTRDtrackerV1.cxx b/TRD/AliTRDtrackerV1.cxx index e49f3787d2c..45b812697aa 100644 --- a/TRD/AliTRDtrackerV1.cxx +++ b/TRD/AliTRDtrackerV1.cxx @@ -875,7 +875,11 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) AliDebug(4, "Failed Tracklet Init"); break; } - if(!ptrTracklet->AttachClusters(chamber, kTRUE, t.Charge()>0?kTRUE:kFALSE, fEventInFile)){ + // Select attachment base on track to B field sign not only track charge which is buggy + // mark kFALSE same sign tracks and kTRUE opposite sign tracks + // A.Bercuci 3.11.2011 + Float_t prod(t.GetBz()*t.Charge()); + if(!ptrTracklet->AttachClusters(chamber, kTRUE, prod<0.?kTRUE:kFALSE, fEventInFile)){ t.SetStatus(AliTRDtrackV1::kNoAttach, ily); if(debugLevel>3){ AliTRDseedV1 trackletCp(*ptrTracklet); @@ -984,7 +988,10 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) // register tracklet with the tracker and track - ptrTracklet->Update(&t); + // Save inside the tracklet the track parameters BEFORE track update. + // Commented out their overwriting AFTER track update + // A.Bercuci 3.11.2011 + //ptrTracklet->Update(&t); ptrTracklet = SetTracklet(ptrTracklet); Int_t index(fTracklets->GetEntriesFast()-1); t.SetTracklet(ptrTracklet, index); diff --git a/TRD/AliTRDtransform.cxx b/TRD/AliTRDtransform.cxx index 6be6039c34b..b17d918b98a 100644 --- a/TRD/AliTRDtransform.cxx +++ b/TRD/AliTRDtransform.cxx @@ -48,8 +48,10 @@ AliTRDtransform::AliTRDtransform() ,fCalPRFROC(0x0) ,fkCalVdriftDet(0x0) ,fkCalT0Det(0x0) + ,fkCalExBDet(0x0) ,fCalVdriftDetValue(0) ,fCalT0DetValue(0) + ,fCalExBDetValue(0) ,fSamplingFrequency(0) ,fPadPlane(0x0) ,fZShiftIdeal(0) @@ -73,6 +75,7 @@ AliTRDtransform::AliTRDtransform() // Get the calibration objects for the global calibration fkCalVdriftDet = fCalibration->GetVdriftDet(); fkCalT0Det = fCalibration->GetT0Det(); + fkCalExBDet = fCalibration->GetExBDet(); } @@ -87,8 +90,10 @@ AliTRDtransform::AliTRDtransform(Int_t det) ,fCalPRFROC(0x0) ,fkCalVdriftDet(0x0) ,fkCalT0Det(0x0) + ,fkCalExBDet(0x0) ,fCalVdriftDetValue(0) ,fCalT0DetValue(0) + ,fCalExBDetValue(0) ,fSamplingFrequency(0) ,fPadPlane(0x0) ,fZShiftIdeal(0) @@ -112,6 +117,7 @@ AliTRDtransform::AliTRDtransform(Int_t det) // Get the calibration objects for the global calibration fkCalVdriftDet = fCalibration->GetVdriftDet(); fkCalT0Det = fCalibration->GetT0Det(); + fkCalExBDet = fCalibration->GetExBDet(); SetDetector(det); @@ -128,8 +134,10 @@ AliTRDtransform::AliTRDtransform(const AliTRDtransform &t) ,fCalPRFROC(0x0) ,fkCalVdriftDet(0x0) ,fkCalT0Det(0x0) + ,fkCalExBDet(0x0) ,fCalVdriftDetValue(0) ,fCalT0DetValue(0) + ,fCalExBDetValue(0) ,fSamplingFrequency(0) ,fPadPlane(0x0) ,fZShiftIdeal(0) @@ -151,7 +159,7 @@ AliTRDtransform::AliTRDtransform(const AliTRDtransform &t) } fkCalVdriftDet = fCalibration->GetVdriftDet(); fkCalT0Det = fCalibration->GetT0Det(); - + fkCalExBDet = fCalibration->GetExBDet(); } //_____________________________________________________________________________ @@ -191,16 +199,19 @@ void AliTRDtransform::Copy(TObject &t) const if (fCalibration) { ((AliTRDtransform &) t).fkCalVdriftDet = fCalibration->GetVdriftDet(); ((AliTRDtransform &) t).fkCalT0Det = fCalibration->GetT0Det(); + ((AliTRDtransform &) t).fkCalExBDet = fCalibration->GetExBDet(); } else { ((AliTRDtransform &) t).fkCalVdriftDet = 0; ((AliTRDtransform &) t).fkCalT0Det = 0; + ((AliTRDtransform &) t).fkCalExBDet = 0; } ((AliTRDtransform &) t).fCalVdriftROC = 0x0; ((AliTRDtransform &) t).fCalT0ROC = 0x0; ((AliTRDtransform &) t).fCalPRFROC = 0x0; ((AliTRDtransform &) t).fCalVdriftDetValue = 0; ((AliTRDtransform &) t).fCalT0DetValue = 0; + ((AliTRDtransform &) t).fCalExBDetValue = 0; ((AliTRDtransform &) t).fSamplingFrequency = 0; ((AliTRDtransform &) t).fPadPlane = 0x0; ((AliTRDtransform &) t).fZShiftIdeal = 0; @@ -236,6 +247,7 @@ void AliTRDtransform::SetDetector(Int_t det) // Get the detector wise defined calibration values fCalVdriftDetValue = fkCalVdriftDet->GetValue(det); fCalT0DetValue = fkCalT0Det->GetValue(det); + fCalExBDetValue = fkCalExBDet->GetValue(det); // Shift needed to define Z-position relative to middle of chamber Int_t layer = Geometry().GetLayer(det); @@ -275,7 +287,7 @@ Bool_t AliTRDtransform::Transform(AliTRDcluster *c) Double_t t0 = fCalT0DetValue + fCalT0ROC->GetValue(col,row); t0 /= fSamplingFrequency; // ExB correction - Double_t exb = AliTRDCommonParam::Instance()->GetOmegaTau(vd); + Double_t exb = fCalExBDetValue;//AliTRDCommonParam::Instance()->GetOmegaTau(vd); Float_t x = c->GetXloc(t0, vd); diff --git a/TRD/AliTRDtransform.h b/TRD/AliTRDtransform.h index b46e704ffe6..18f3b625b8a 100644 --- a/TRD/AliTRDtransform.h +++ b/TRD/AliTRDtransform.h @@ -53,8 +53,10 @@ class AliTRDtransform : public TObject { AliTRDCalROC *fCalPRFROC; // Pad wise PRF calibration object const AliTRDCalDet *fkCalVdriftDet; // ROC wise Vdrift calibration object const AliTRDCalDet *fkCalT0Det; // ROC wise T0 calibration object + const AliTRDCalDet *fkCalExBDet; // ROC wise ExB calibration object Double_t fCalVdriftDetValue; // ROC wise Vdrift calibration value Double_t fCalT0DetValue; // ROC wise T0 calibration value + Double_t fCalExBDetValue; // Det wise ExB calibration value Double_t fSamplingFrequency; // ADC sampling frequency diff --git a/TRD/Cal/AliTRDCalTrkAttach.cxx b/TRD/Cal/AliTRDCalTrkAttach.cxx index 88dd3610abd..2a79169a667 100644 --- a/TRD/Cal/AliTRDCalTrkAttach.cxx +++ b/TRD/Cal/AliTRDCalTrkAttach.cxx @@ -34,8 +34,9 @@ #include "AliLog.h" -#include "AliTRDCalTrkAttach.h" #include "AliTRDcalibDB.h" +#include "AliTRDgeometry.h" +#include "AliTRDCalTrkAttach.h" ClassImp(AliTRDCalTrkAttach) @@ -71,13 +72,13 @@ Double_t AliTRDCalTrkAttach::CookLikelihood(Bool_t chg, Int_t ly, Float_t pt, Fl return 0.; } //check likelihood array - if (!fLike || fLike->GetEntries() != 6*2*kNcalib) { + if (!fLike || fLike->GetEntries() != AliTRDgeometry::kNlayer*kNcharge*kNcalib) { AliError("No usable AttachClusters calib object."); return 0.; } - + Int_t offset(ly*kNcalib*kNcharge); // offset for layer TGraphErrors *g(NULL); - if(!(g = (TGraphErrors*)fLike->At(ly*8+2*Int_t(kResPos)+Int_t(chg)))){ + if(!(g = (TGraphErrors*)fLike->At(offset+Int_t(kResPos)*kNcharge+Int_t(chg)))){ AliError("Failed retrieving AttachClusters graph."); return 0.; } @@ -109,7 +110,7 @@ Double_t AliTRDCalTrkAttach::CookLikelihood(Bool_t chg, Int_t ly, Float_t pt, Fl dd = (dyr - dym)/sym; dd*=dd; f[0] = TMath::Exp(-0.5*dd); // +++ process dphi - if(!(g = (TGraphErrors*)fLike->At(ly*8+2*Int_t(kResAng)+Int_t(chg)))){ + if(!(g = (TGraphErrors*)fLike->At(offset+Int_t(kResAng)*kNcharge+Int_t(chg)))){ AliError("Failed retrieving AttachClusters graph."); return 0.; } @@ -119,7 +120,7 @@ Double_t AliTRDCalTrkAttach::CookLikelihood(Bool_t chg, Int_t ly, Float_t pt, Fl dd = (dphi - dpm)/spm; dd*=dd; f[1] = TMath::Exp(-0.5*dd); // +++ process no of clusters - if(!(g = (TGraphErrors*)fLike->At(ly*8+2*Int_t(kNclMean)+Int_t(chg)))){ + if(!(g = (TGraphErrors*)fLike->At(offset+Int_t(kNclMean)*kNcharge+Int_t(chg)))){ AliError("Failed retrieving AttachClusters graph."); return 0.; } @@ -129,7 +130,7 @@ Double_t AliTRDCalTrkAttach::CookLikelihood(Bool_t chg, Int_t ly, Float_t pt, Fl // process phi dependences // +++ process /s - if(!(g = (TGraphErrors*)fLike->At(ly*8+2*Int_t(kSigma)+Int_t(chg)))){ + if(!(g = (TGraphErrors*)fLike->At(offset+Int_t(kSigma)*kNcharge+Int_t(chg)))){ AliError("Failed retrieving AttachClusters graph."); return 0.; } @@ -156,7 +157,7 @@ Double_t AliTRDCalTrkAttach::CookLikelihood(Bool_t chg, Int_t ly, Float_t pt, Fl Double_t sm = boundary?y1:((phiTrk*(y0-y1) + (x0*y1-x1*y0))*invdx), ssm = 0.5*(g->GetErrorY(ip)+g->GetErrorY(jp)); dd = (sr - sm)/ssm; dd*=dd; - f[3] = TMath::Exp(-0.5*dd); + f[3] = 1.;//TMath::Exp(-0.5*dd); // Calculate likelihood Double_t length = f[0]*f[0]+f[1]*f[1]+f[2]*f[2]+f[3]*f[3]; @@ -188,12 +189,12 @@ Bool_t AliTRDCalTrkAttach::LoadReferences(const Char_t *file) cs[2] = {'n', 'p'}; if(fLike) fLike->Clear(); - else fLike = new TObjArray(6*2*kNcalib); - for(Int_t ily(0); ily<6; ily++){ + else fLike = new TObjArray(AliTRDgeometry::kNlayer*kNcharge*kNcalib); + for(Int_t ily(0); ilyGet(Form("%c%c%d", co[icalib], cs[isgn], ily)))) return kFALSE; - fLike->AddAt(g, ily*8+2*icalib+isgn); + fLike->AddAt(g, kNcharge*(ily*kNcalib+icalib)+isgn); } } } diff --git a/TRD/Cal/AliTRDCalTrkAttach.h b/TRD/Cal/AliTRDCalTrkAttach.h index 24a824c3367..1d786465077 100644 --- a/TRD/Cal/AliTRDCalTrkAttach.h +++ b/TRD/Cal/AliTRDCalTrkAttach.h @@ -19,13 +19,16 @@ class TObjArray; class AliTRDCalTrkAttach : public TNamed { public: - enum ETRDCalTrkAttachCalib { + enum ETRDCalTrkAttachCalib { kResPos = 0 // relative position residual location ,kResAng // angular residual location ,kSigma // relative error location ,kNclMean // mean no. of clusters/tracklet location ,kNcalib // no. of calib objects }; + enum ETRDCalTrkAttachParam { + kNcharge = 2 + }; AliTRDCalTrkAttach(); virtual ~AliTRDCalTrkAttach(); diff --git a/TRD/Cal/AliTRDmakeTrkDB.C b/TRD/Cal/AliTRDmakeTrkDB.C index 665222d1e58..50ba824dd66 100644 --- a/TRD/Cal/AliTRDmakeTrkDB.C +++ b/TRD/Cal/AliTRDmakeTrkDB.C @@ -10,11 +10,11 @@ void AliTRDmakeTrkDB(const Char_t *file) metaData->SetObjectClassName("TObjArray"); metaData->SetResponsible("Alexandru Bercuci"); metaData->SetBeamPeriod(1); - metaData->SetAliRootVersion("05-27-06b"); //root version + metaData->SetAliRootVersion("05-30-02"); //root version metaData->SetComment( "Likelihoods for Attach Cluster.\n" - " Tunned on Pb-Pb run 137161."); - AliCDBId id("TRD/Calib/TrkAttach", 95352, AliCDBRunRange::Infinity()); + " Tunned on p-p run 159580."); + AliCDBId id("TRD/Calib/TrkAttach", 151536, AliCDBRunRange::Infinity()); AliTRDCalTrkAttach attach; if(!attach.LoadReferences(file)) return; // attach.SetNsgmDy(Int_t ns0, Int_t ns1); -- 2.43.0