AliExternalTrackParam t0seed;
AliExternalTrackParam seed;
AliExternalTrackParam track;
+ AliExternalTrackParam trackITS;
AliExternalTrackParam tOrig;
+ AliExternalTrackParam tOrigITS;
AliExternalTrackParam *dummy;
delete dummy;
}
+ // Copy original track and fitted track
+ // for extrapolation to ITS last layer
+ tOrigITS = *tr;
+ trackITS = track;
+
// propagate seed to 0
const Double_t kMaxSnp = 0.85;
const Double_t kMass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
AliTrackerBase::PropagateTrackTo(&seed,0,kMass,5,kTRUE,kMaxSnp,0,kFALSE,fUseMaterial);
-
+
+ // propagate original track to ITS last layer
+ Double_t lastLayerITS = 43.0; // same as in AliToyMCEventGenerator::MakeITSClusters (hard coded)
+ AliTrackerBase::PropagateTrackTo(&tOrigITS,lastLayerITS,kMass,1,kTRUE,kMaxSnp,0,kFALSE,fUseMaterial);
+
+ // rotate fitted track to the frame of the original track and propagate to same reference
+ trackITS.Rotate(tOrigITS.GetAlpha());
+ AliTrackerBase::PropagateTrackTo(&trackITS,lastLayerITS,kMass,5,kTRUE,kMaxSnp,0,kFALSE,fUseMaterial);
+
}
}
"seed.=" << &seed <<
"track.=" << &track <<
"tOrig.=" << &tOrig <<
+ "trackITS.=" << &trackITS <<
+ "tOrigITS.=" << &tOrigITS <<
"\n";
}
for (Int_t sec=0;sec<fkNSectorOuter;sec++){
//
//tpcTracker->MakeSeeds3(arr, sec,upperRow,lowerRow,cuts,-1,1);
-// MakeSeeds(arr, sec,upperRow,lowerRow); // own function (based on TLinearFitter)
- MakeSeeds2(arr, sec,upperRow,lowerRow); // own function (based on TLinearFitter)
+ MakeSeeds(arr, sec,upperRow,lowerRow); // own function (based on TLinearFitter)
//tpcTracker->SumTracks(seeds,arr);
//tpcTracker->SignClusters(seeds,3.0,3.0);
const Int_t nT02D = 2;
const Int_t nZ0 = 2;
const Int_t nTrackParams = 9;
+ const Int_t nTrackParamsITS = 9;
const Int_t nEff = 1;
Int_t col = kBlack;
TString sT0[nT0] = {"fTime0-t0","fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift"};
TString sT02D[nT02D] = {"fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift:tOrig.fP[3]","fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift:tOrig.fP[4]"};
TString sTrackParams[nTrackParams] = {"track.fP[0]-tOrig.fP[0]","track.fP[1]-tOrig.fP[1]","track.fP[2]-tOrig.fP[2]","track.fP[3]-tOrig.fP[3]","track.fP[4]-tOrig.fP[4]","track.fAlpha-tOrig.fAlpha","track.fX/tOrig.fX","track.fP[0]/tOrig.fP[0]","track.fP[1]/tOrig.fP[1]"};
+ TString sTrackParamsITS[nTrackParamsITS] = {"trackITS.fP[0]-tOrigITS.fP[0]","trackITS.fP[1]-tOrigITS.fP[1]","trackITS.fP[2]-tOrigITS.fP[2]","trackITS.fP[3]-tOrigITS.fP[3]","trackITS.fP[4]-tOrigITS.fP[4]","trackITS.fAlpha-tOrigITS.fAlpha","trackITS.fX/tOrigITS.fX","trackITS.fP[0]/tOrigITS.fP[0]","trackITS.fP[1]/tOrigITS.fP[1]"};
TString sZ0[nZ0] = {"(fTime0-t0)*vDrift","(fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift)*vDrift"};
TString sEff[nEff] = {"nSeedClustersID/nClustersMC:nSeedClusters/nClustersMC"};
TString tT0[nT0] = {"T_{0} resolution","intrinsic T_{0} resolution"};
TString tT02D[nT0] = {"intrinsic T_{0} resolution vs. tan#lambda","intrinsic T_{0} resolution vs. 1/p_{T}"};
TString tTrackParams[nTrackParams] = {"local y","z","sin inclination angle","tan#lambda","1/p_{T}","#alpha","X","Y","Z"};
+ TString tTrackParamsITS[nTrackParamsITS] = {"local y","z","sin inclination angle","tan#lambda","1/p_{T}","#alpha","X","Y","Z"};
TString tZ0[nZ0] = {"Z_{0} resolution","intrinsic Z_{0} resolution"};
TString tEff[nEff] = {"nSeedClustersID/nClustersMC:nSeedClusters/nClustersMC"};
TCanvas *cTrackParams = new TCanvas(Form("cTrackParams_%s",sConfig.Data()),Form("cTrackParams_%s",sConfig.Data()),1200,900);
cTrackParams->Divide(3,3);
+ TCanvas *cTrackParamsITS = new TCanvas(Form("cTrackParamsITS_%s",sConfig.Data()),Form("cTrackParamsITS_%s",sConfig.Data()),1200,900);
+ cTrackParamsITS->Divide(3,3);
+
TCanvas *cEff = new TCanvas(Form("cEff_%s",sConfig.Data()),Form("cEff_%s",sConfig.Data()),1200,900);
//cEff->Divide(2,1);
}
- // draw cluster efficiency
- for(Int_t iEff = 0; iEff < nEff; iEff ++){
-
- //cEff->cd(iEff+1);
- cEff->cd();
- TStatToolkit::DrawHistogram(Tracks,sEff[iEff].Data(),sSel.Data(),Form("hEff_%s_%d",sConfig.Data(),iEff),Form("%s",tEff[iEff].Data()),3);
+
+ // draw track parameters at ITS outer layer
+ for(Int_t iTrackParamsITS = 0; iTrackParamsITS < nTrackParamsITS; iTrackParamsITS ++){
+
+ cTrackParamsITS->cd(iTrackParamsITS+1);
+ TStatToolkit::DrawHistogram(Tracks,sTrackParamsITS[iTrackParamsITS].Data(),sSel.Data(),Form("hTrackParamsITS_%s_%d",sConfig.Data(),iTrackParamsITS),Form("%s",tTrackParamsITS[iTrackParamsITS].Data()),3);
+ }
+
+ // draw cluster efficiency
+ if(inFileName.Contains("allClusters")){
+ for(Int_t iEff = 0; iEff < nEff; iEff ++){
+
+ //cEff->cd(iEff+1);
+ cEff->cd();
+ TStatToolkit::DrawHistogram(Tracks,sEff[iEff].Data(),sSel.Data(),Form("hEff_%s_%d",sConfig.Data(),iEff),Form("%s",tEff[iEff].Data()),3);
+
+ }
}
// plots
cZ0->SaveAs(Form("%s_Z0.eps",outFileName.Data()));
cT02D->SaveAs(Form("%s_T02D.eps",outFileName.Data()));
cTrackParams->SaveAs(Form("%s_TrackParams.eps",outFileName.Data()));
- cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
+ cTrackParamsITS->SaveAs(Form("%s_TrackParamsITS.eps",outFileName.Data()));
+ if(inFileName.Contains("allClusters"))
+ cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
cT0->SaveAs(Form("%s_T0.png",outFileName.Data()));
cZ0->SaveAs(Form("%s_Z0.png",outFileName.Data()));
cT02D->SaveAs(Form("%s_T02D.png",outFileName.Data()));
cTrackParams->SaveAs(Form("%s_TrackParams.png",outFileName.Data()));
- cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
+ cTrackParamsITS->SaveAs(Form("%s_TrackParamsITS.png",outFileName.Data()));
+ if(inFileName.Contains("allClusters"))
+ cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
}
}