if(AliITSReconstructor::GetRecoParam()->GetSAUseAllClusters()==kFALSE) {
while (nentr--) {
AliESDtrack *track=event->GetTrack(nentr);
- if (track->GetStatus()&AliESDtrack::kITSin==AliESDtrack::kITSin){
+ if ((track->GetStatus()&AliESDtrack::kITSin) == AliESDtrack::kITSin){
Int_t idx[12];
Int_t ncl = track->GetITSclusters(idx);
for(Int_t k=0;k<ncl;k++){
//loop on different minNPoints
Int_t minMinNPoints=minNPoints;
- if(AliITSReconstructor::GetRecoParam()->GetSAOnePointTracks()) minMinNPoints=2;
+ if(AliITSReconstructor::GetRecoParam()->GetAllowProlongationWithEmptyRoad()) minMinNPoints=2;
for(Int_t iMinNPoints=minNPoints; iMinNPoints>=minMinNPoints; iMinNPoints--) {
//loop on the different windows
for(Int_t nloop=0;nloop<fNloop;nloop++){
}
if(layOK>=iMinNPoints) {
+ //printf("-NPOINTS: %d; MAP: %d %d %d %d %d %d\n",layOK,nClusLay[0],nClusLay[1],nClusLay[2],nClusLay[3],nClusLay[4],nClusLay[5]);
AliITStrackV2* tr2 = 0;
tr2 = FitTrack(trs,primaryVertex);
if(!tr2) continue;
+ //printf("-NPOINTS fit: %d\n",tr2->GetNumberOfClusters());
+
AliESDtrack outtrack;
outtrack.UpdateTrackParams(tr2,AliESDtrack::kITSin);
//if 5/6 points are required, second loop starting
//from second layer (SPD2), to find tracks with point of
- //layer 1 missing
- if(!fSixPoints) {
+ //layer 1 missing. Not done for cosmics.
+ if(!fSixPoints && fOuterStartLayer==0) {
//printf("looking from SPD2\n");
// counter for clusters on each layer
for(Int_t nloop=0;nloop<fNloop;nloop++){
for(Int_t nnp=0;nnp<AliITSgeomTGeo::GetNLayers()-1;nnp++){
if(nClusLay[nnp]!=0) layOK+=1;
}
- if(layOK>=minNPoints){ // 5/6
+ if(layOK>=minNPoints){ // 5/6
+ //printf("--NPOINTS: %d; MAP: %d %d %d %d %d %d\n",layOK,nClusLay[0],nClusLay[1],nClusLay[2],nClusLay[3],nClusLay[4],nClusLay[5]);
+
AliITStrackV2* tr2 = 0;
tr2 = FitTrack(trs,primaryVertex);
if(!tr2) continue;
+ //printf("--NPOINTS fit: %d\n",tr2->GetNumberOfClusters());
AliESDtrack outtrack;
outtrack.UpdateTrackParams(tr2,AliESDtrack::kITSin);
// search for tracks starting from SPD2, SDD1, SDD2, SSD2
// for cosmics (A. Dainese 31.07.07)
- if(fOuterStartLayer>0) {
+ if(fOuterStartLayer>0 && !AliITSReconstructor::GetRecoParam()->GetAllowProlongationWithEmptyRoad()) {
for(Int_t innLay=1; innLay<=fOuterStartLayer; innLay++) {
//printf("Searching from layer %d outward\n",innLay);
minNPoints=AliITSgeomTGeo::GetNLayers()-innLay;
if(nClusLay[nnp]!=0) layOK+=1;
}
if(layOK>=minNPoints){
+ //printf("---NPOINTS: %d; MAP: %d %d %d %d %d %d\n",layOK,nClusLay[0],nClusLay[1],nClusLay[2],nClusLay[3],nClusLay[4],nClusLay[5]);
AliITStrackV2* tr2 = 0;
tr2 = FitTrack(trs,primaryVertex);
if(!tr2) continue;
-
+ //printf("---NPOINTS fit: %d\n",tr2->GetNumberOfClusters());
AliESDtrack outtrack;
outtrack.UpdateTrackParams(tr2,AliESDtrack::kITSin);
} //end if(fOuterStartLayer>0)
- // search for 1-point tracks, only for cosmics
+ // search for 1-point tracks in SPD, only for cosmics
// (A.Dainese 21.03.08)
if(AliITSReconstructor::GetRecoParam()->GetSAOnePointTracks() &&
TMath::Abs(event->GetMagneticField())<0.01) {
- for(Int_t innLay=0; innLay<=fOuterStartLayer; innLay++) {
+ Int_t outerLayer=1; // only SPD
+ for(Int_t innLay=0; innLay<=TMath::Min(1,fOuterStartLayer); innLay++) {
// counter for clusters on each layer
for(Int_t nloop=0;nloop<fNloop;nloop++){
kk=0;
nClusLay[kk] = SearchClusters(innLay,fPhiWin[nloop],fLambdaWin[nloop],
trs,primaryVertex[2],pflag);
- for(Int_t nextLay=innLay+1; nextLay<AliITSgeomTGeo::GetNLayers(); nextLay++) {
+ for(Int_t nextLay=innLay+1; nextLay<=outerLayer; nextLay++) {
kk++;
nClusLay[kk] = SearchClusters(nextLay,fPhiWin[nloop],fLambdaWin[nloop],
trs,primaryVertex[2],pflag);
if(nClusLay[nnp]!=0) layOK+=1;
}
if(layOK==1) {
+ //printf("----NPOINTS: %d; MAP: %d %d %d %d %d %d\n",layOK,nClusLay[0],nClusLay[1],nClusLay[2],nClusLay[3],nClusLay[4],nClusLay[5]);
AliITStrackV2* tr2 = 0;
Bool_t onePoint = kTRUE;
tr2 = FitTrack(trs,primaryVertex,onePoint);
if(!tr2) continue;
+ //printf("----NPOINTS fit: %d\n",tr2->GetNumberOfClusters());
AliESDtrack outtrack;
outtrack.UpdateTrackParams(tr2,AliESDtrack::kITSin);
Double_t minChi2=trk->GetChi2();
Int_t index=0;
for(Int_t i=1;i<dim;i++){
- AliITStrackV2* trk = (AliITStrackV2*)fListOfTracks->At(i);
+ trk = (AliITStrackV2*)fListOfTracks->At(i);
Double_t chi2=trk->GetChi2();
if(chi2<minChi2){
minChi2=chi2;