delete fArrayDz;
fArrayDz=NULL;
}
- for(Int_t i=0;i<5;i++){
+ for(Int_t i=0;i<10;i++){
if(fCosmiMatchingHisto[i]){
delete fCosmiMatchingHisto[i];
fCosmiMatchingHisto[i]=NULL;
fResHistoTPCvertex[i]=0;
}
- if (fTPCVertex[0]) {
- for (Int_t i=0;i<12;i++) delete fTPCVertex[i];
- }
- if (fTPCVertexCorrelation[0]) {
- for (Int_t i=0;i<5;i++) delete fTPCVertexCorrelation[i];
- }
+ for (Int_t i=0;i<12;i++) if (fTPCVertex[i]) delete fTPCVertex[i];
+ for (Int_t i=0;i<5;i++) if (fTPCVertexCorrelation[i]) delete fTPCVertexCorrelation[i];
if (fAlignITSTPC){
fAlignITSTPC->SetOwner(kTRUE);
delete fAlignTRDTPC;
delete fAlignTOFTPC;
}
+
+ if (fArrayLaserA) {
+ fArrayLaserA->SetOwner();
+ fArrayLaserA->Delete();
+ delete fArrayLaserA;
+ }
+
+ if (fArrayLaserA) {
+ fArrayLaserC->SetOwner();
+ fArrayLaserC->Delete();
+ delete fArrayLaserC;
+ }
+
}
// Bool_t AliTPCcalibTime::IsLaser(const AliESDEvent *const /*event*/) const{
}
}
- TObjArray* addArray=cal->GetHistoDrift();
- if(!addArray) return 0;
- TIterator* iterator = addArray->MakeIterator();
- iterator->Reset();
- THnSparse* addHist=NULL;
- if ((fMemoryMode>1)) while((addHist=(THnSparseF*)iterator->Next())){
- // if(!addHist) continue;
- addHist->Print();
- THnSparse* localHist=(THnSparseF*)fArrayDz->FindObject(addHist->GetName());
- if(!localHist){
- localHist=new THnSparseF(addHist->GetName(),"HistVdrift;time;p/T ratio;Vdrift;run",4,fBinsVdrift,fXminVdrift,fXmaxVdrift);
- fArrayDz->AddLast(localHist);
- }
- localHist->Add(addHist);
- }
-
+// TObjArray* addArray=cal->GetHistoDrift();
+// if(!addArray) return 0;
+// TIterator* iterator = addArray->MakeIterator();
+// iterator->Reset();
+// THnSparse* addHist=NULL;
+// if ((fMemoryMode>1)) while((addHist=(THnSparseF*)iterator->Next())){
+// // if(!addHist) continue;
+// addHist->Print();
+// THnSparse* localHist=(THnSparseF*)fArrayDz->FindObject(addHist->GetName());
+// if(!localHist){
+// localHist=new THnSparseF(addHist->GetName(),"HistVdrift;time;p/T ratio;Vdrift;run",4,fBinsVdrift,fXminVdrift,fXmaxVdrift);
+// fArrayDz->AddLast(localHist);
+// }
+// localHist->Add(addHist);
+// }
+// delete iterator;
for(Int_t i=0;i<10;i++) if (cal->GetCosmiMatchingHisto(i)) fCosmiMatchingHisto[i]->Add(cal->GetCosmiMatchingHisto(i));
//
// Merge alignment
//
+ const Int_t kMinUpdates=10;
+ const Float_t kMaxOut=0.1;
for (Int_t itype=0; itype<3; itype++){
//
//
AliRelAlignerKalman *kalman1 = (AliRelAlignerKalman *)arr1->UncheckedAt(i);
AliRelAlignerKalman *kalman0 = (AliRelAlignerKalman *)arr0->UncheckedAt(i);
if (!kalman1) continue;
+ if (kalman1->GetNUpdates()<kMinUpdates) continue;
+ if (kalman1->GetNOutliers()>(kalman1->GetNUpdates()*kMaxOut)) continue;
if (!kalman0) {arr0->AddAt(new AliRelAlignerKalman(*kalman1),i); continue;}
kalman0->SetRejectOutliers(kFALSE);
kalman0->Merge(kalman1);
}
}
+ delete iter;
return 0;
}
const Double_t kVdErr = 0.1; // initial uncertainty of the vd correction
const Double_t kT0Err = 3.; // initial uncertainty of the T0 time
const Double_t kVdYErr = 0.05; // initial uncertainty of the vd correction
- const Double_t kOutCut = 1.0; // outlyer cut in AliRelAlgnmentKalman
+ const Double_t kOutCut = 3.0; // outlyer cut in AliRelAlgnmentKalman
const Double_t kMinPt = 0.3; // minimal pt
const Double_t kMax1Pt=0.5; //maximal 1/pt distance
const Int_t kN=50; // deepnes of history
(*align->GetStateCov())(7,7)=kT0Err*kT0Err;
(*align->GetStateCov())(8,8)=kVdYErr*kVdYErr;
align->SetOutRejSigma(kOutCut+kOutCut*kN);
- align->SetRejectOutliers(kFALSE);
+ // align->SetRejectOutliers(kFALSE);
+ align->SetRejectOutliers(kTRUE);
+ align->SetRejectOutliersSigma2Median(kTRUE);
align->SetTPCvd(AliTPCcalibDB::Instance()->GetParameters()->GetDriftV()/1000000.);
align->SetMagField(fMagF);
}
//
Int_t nupdates=align->GetNUpdates();
- align->SetOutRejSigma(kOutCut+kOutCut*kN/Double_t(nupdates));
- align->SetRejectOutliers(kFALSE);
+ align->SetOutRejSigma(kOutCut+kOutCut*kN/Double_t(nupdates+1));
+ // align->SetRejectOutliers(kFALSE);
+ align->SetRejectOutliers(kTRUE);
+ align->SetRejectOutliersSigma2Median(kTRUE);
+
TTreeSRedirector *cstream = GetDebugStreamer();
if (cstream && align->GetState() && align->GetState()->GetNrows()>2 ){
TVectorD gpTPC(3), gdTPC(3);
// 3. Update kalman filter
//
const Int_t kMinTPC = 80; // minimal number of TPC cluster
- const Int_t kMinTRD = 50; // minimal number of TRD cluster
- const Double_t kMinZ = 20; // maximal dz distance
+ const Int_t kMinTRD = 60; // minimal number of TRD cluster
+ // const Double_t kMinZ = 20; // maximal dz distance
const Double_t kMaxDy = 5.; // maximal dy distance
const Double_t kMaxAngle= 0.1; // maximal angular distance
const Double_t kSigmaCut= 10; // maximal sigma distance to median
const Double_t kVdErr = 0.1; // initial uncertainty of the vd correction
const Double_t kT0Err = 3.; // initial uncertainty of the T0 time
const Double_t kVdYErr = 0.05; // initial uncertainty of the vd correction
- const Double_t kOutCut = 1.0; // outlyer cut in AliRelAlgnmentKalman
- const Double_t kRefX = 275; // reference X
+ const Double_t kOutCut = 3.0; // outlyer cut in AliRelAlgnmentKalman
+ const Double_t kRefX = 330; // reference X
const Int_t kN=50; // deepnes of history
static Int_t kglast=0;
static Double_t* kgdP[4]={new Double_t[kN], new Double_t[kN], new Double_t[kN], new Double_t[kN]};
Int_t dummycl[1000];
if (track->GetTRDclusters(dummycl)<kMinTRD) return; // minimal amount of clusters
if (track->GetTPCNcls()<kMinTPC) return; // minimal amount of clusters cut
- if (!friendTrack->GetTRDIn()) return;
- if (!track->IsOn(AliESDtrack::kTRDrefit)) return;
+ // if (!friendTrack->GetTRDIn()) return;
+ // if (!track->IsOn(AliESDtrack::kTRDrefit)) return;
if (!track->IsOn(AliESDtrack::kTRDout)) return;
if (!track->GetInnerParam()) return;
if (!friendTrack->GetTPCOut()) return;
// exclude crossing track
if (friendTrack->GetTPCOut()->GetZ()*track->GetInnerParam()->GetZ()<0) return;
- if (TMath::Abs(track->GetInnerParam()->GetZ())<kMinZ) return;
//
AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*(friendTrack->GetTPCOut()));
AliTracker::PropagateTrackToBxByBz(&pTPC,kRefX,0.1,0.1,kFALSE);
- AliExternalTrackParam pTRD(*(friendTrack->GetTRDIn()));
+ AliExternalTrackParam *pTRDtrack = 0;
+ TObject *calibObject=0;
+ for (Int_t l=0;(calibObject=((AliESDfriendTrack*)friendTrack)->GetCalibObject(l));++l) {
+ if ((dynamic_cast< AliTPCseed*>(calibObject))) continue;
+ if ((pTRDtrack=dynamic_cast< AliExternalTrackParam*>(calibObject))) break;
+ }
+ if (!pTRDtrack) return;
+ // AliExternalTrackParam pTRD(*(friendTrack->GetTRDIn()));
+ AliExternalTrackParam pTRD(*(pTRDtrack));
pTRD.Rotate(pTPC.GetAlpha());
// pTRD.PropagateTo(pTPC.GetX(),fMagF);
AliTracker::PropagateTrackToBxByBz(&pTRD,pTPC.GetX(),0.1,0.1,kFALSE);
(*align->GetStateCov())(7,7)=kT0Err*kT0Err;
(*align->GetStateCov())(8,8)=kVdYErr*kVdYErr;
align->SetOutRejSigma(kOutCut+kOutCut*kN);
- align->SetRejectOutliers(kFALSE);
+ // align->SetRejectOutliers(kFALSE);
+ align->SetRejectOutliers(kTRUE);
+ align->SetRejectOutliersSigma2Median(kTRUE);
+
align->SetTPCvd(AliTPCcalibDB::Instance()->GetParameters()->GetDriftV()/1000000.);
align->SetMagField(fMagF);
fAlignTRDTPC->AddAt(align,htime);
}
//
Int_t nupdates=align->GetNUpdates();
- align->SetOutRejSigma(kOutCut+kOutCut*kN/Double_t(nupdates));
- align->SetRejectOutliers(kFALSE);
+ align->SetOutRejSigma(kOutCut+kOutCut*kN/Double_t(nupdates+1));
+ // align->SetRejectOutliers(kFALSE);
+ align->SetRejectOutliers(kTRUE);
+ align->SetRejectOutliersSigma2Median(kTRUE);
+
TTreeSRedirector *cstream = GetDebugStreamer();
if (cstream && align->GetState() && align->GetState()->GetNrows()>2 ){
TVectorD gpTPC(3), gdTPC(3);
const Double_t kT0Err = 3.; // initial uncertainty of the T0 time
const Double_t kVdYErr = 0.05; // initial uncertainty of the vd correction
- const Double_t kOutCut = 1.0; // outlyer cut in AliRelAlgnmentKalman
+ const Double_t kOutCut = 3.0; // outlyer cut in AliRelAlgnmentKalman
const Int_t kN=50; // deepnes of history
static Int_t kglast=0;
static Double_t* kgdP[4]={new Double_t[kN], new Double_t[kN], new Double_t[kN], new Double_t[kN]};
(*align->GetStateCov())(7,7)=kT0Err*kT0Err;
(*align->GetStateCov())(8,8)=kVdYErr*kVdYErr;
align->SetOutRejSigma(kOutCut+kOutCut*kN);
- align->SetRejectOutliers(kFALSE);
+ // align->SetRejectOutliers(kFALSE);
+ align->SetRejectOutliers(kTRUE);
+ align->SetRejectOutliersSigma2Median(kTRUE);
+
align->SetTPCvd(AliTPCcalibDB::Instance()->GetParameters()->GetDriftV()/1000000.);
align->SetMagField(fMagF);
fAlignTOFTPC->AddAt(align,htime);
align->SetRunNumber(fRun );
//
Int_t nupdates=align->GetNUpdates();
- align->SetOutRejSigma(kOutCut+kOutCut*kN/Double_t(nupdates));
- align->SetRejectOutliers(kFALSE);
+ align->SetOutRejSigma(kOutCut+kOutCut*kN/Double_t(nupdates+1));
+ // align->SetRejectOutliers(kFALSE);
+ align->SetRejectOutliers(kTRUE);
+ align->SetRejectOutliersSigma2Median(kTRUE);
+
TTreeSRedirector *cstream = GetDebugStreamer();
if (cstream && align->GetState() && align->GetState()->GetNrows()>2 ){
TVectorD gpTPC(3), gdTPC(3);
fResHistoTPCTOF[0] = new THnSparseS("TPCTOF#Delta_{Y} (cm)","#Delta_{Y} (cm)", 4, binsTrack,xminTrack, xmaxTrack);
//
// delta z
- xminTrack[0] =-3.; xmaxTrack[0]=3.; //
+ xminTrack[0] =-6.; xmaxTrack[0]=6.; //
fResHistoTPCCE[1] = new THnSparseS("TPCCE#Delta_{Z} (cm)","#Delta_{Z} (cm)", 5, binsTrack,xminTrack, xmaxTrack);
fResHistoTPCITS[1] = new THnSparseS("TPCITS#Delta_{Z} (cm)","#Delta_{Z} (cm)", 4, binsTrack,xminTrack, xmaxTrack);
fResHistoTPCvertex[1] = new THnSparseS("TPCVertex#Delta_{Z} (cm)","#Delta_{Z} (cm)", 4, binsTrack,xminTrack, xmaxTrack);
fResHistoTPCTOF[2] = new THnSparseS("TPCTOF#Delta_{#phi}","#Delta_{#phi}", 4, binsTrack,xminTrack, xmaxTrack);
//
// delta theta-P3
- xminTrack[0] =-0.025; xmaxTrack[0]=0.025; //
+ xminTrack[0] =-0.05; xmaxTrack[0]=0.05; //
fResHistoTPCCE[3] = new THnSparseS("TPCCE#Delta_{#theta}","#Delta_{#theta}", 5, binsTrack,xminTrack, xmaxTrack);
fResHistoTPCITS[3] = new THnSparseS("TPCITS#Delta_{#theta}","#Delta_{#theta}", 4, binsTrack,xminTrack, xmaxTrack);
fResHistoTPCvertex[3] = new THnSparseS("TPCITSv#Delta_{#theta}","#Delta_{#theta}", 4, binsTrack,xminTrack, xmaxTrack);
const AliExternalTrackParam * pTPCIn = pTrack->GetInnerParam();
AliExternalTrackParam pTPCvertex(*(pTrack->GetInnerParam()));
//
- AliExternalTrackParam lits(*pTrack);
+ if (!(pTrack->GetConstrainedParam())) return;
+ AliExternalTrackParam lits(*(pTrack->GetConstrainedParam()));
if (TMath::Abs(pTrack->GetY())>3) return; // beam pipe
pTPCvertex.Rotate(lits.GetAlpha());
//pTPCvertex.PropagateTo(pTPCvertex->GetX(),fMagF);