fEvent(0x0),
fESD(0x0),
fVtx(0x0),
- fTrackCuts(0),
+ fTrackCuts(0x0),
+ fTrackCutsITSLoose(0x0),
+ fTrackCutsTPConly(0x0),
fTrackType(0),
fFilterMask(0),
fSigmaConstrainedMax(-1.),
fEvent(0x0),
fESD(0x0),
fVtx(0x0),
- fTrackCuts(),
+ fTrackCuts(0x0),
+ fTrackCutsITSLoose(0x0),
+ fTrackCutsTPConly(0x0),
fTrackType(0),
fFilterMask(0),
fSigmaConstrainedMax(-1.),
const Float_t ptmax3 = fgkPtMax;
const Int_t nbin11 = (int)((ptmax1-ptmin1)/fPtBinEdges[0][1]);
const Int_t nbin12 = (int)((ptmax2-ptmin2)/fPtBinEdges[1][1])+nbin11;
- const Int_t nbin13 = (int)((ptmax3-ptmin3)/fPtBinEdges[2][2])+nbin12;
+ const Int_t nbin13 = (int)((ptmax3-ptmin3)/fPtBinEdges[2][1])+nbin12;
Int_t fgkNPtBins=nbin13;
//Create array with low edges of each bin
Double_t *binsPt=new Double_t[fgkNPtBins+1];
//________________________________________________________________________
Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliVEvent *ev){
+ //
+ // Get centrality from ESD or AOD
+ //
+
if(fDataType==kESD)
return CalculateCentrality(dynamic_cast<AliESDEvent*>(ev));
else if(fDataType==kAOD)
//________________________________________________________________________
Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliESDEvent *esd){
+ //
+ // Get centrality from ESD
+ //
-
- Float_t cent = 999;
+ Float_t cent = -1;
if(esd){
if(esd->GetCentrality()){
cent = esd->GetCentrality()->GetCentralityPercentile("V0M");
- if(fDebug>3) cout << "centrality: " << cent << endl;
+ if(fDebug>3) printf("centrality: %f\n",cent);
}
}
- if(cent>80)return 4;
- if(cent>50)return 3;
- if(cent>30)return 2;
- if(cent>10)return 1;
- return 0;
+ return GetCentralityClass(cent);
}
//________________________________________________________________________
Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliAODEvent *aod){
+ //
+ // Get centrality from AOD
+ //
- if(!aod)return 4;
+ if(!aod) return 5;
Float_t cent = aod->GetHeader()->GetCentrality();
- cout << "centrality: " << cent << endl;
- if(cent>80)return 4;
- if(cent>50)return 3;
- if(cent>30)return 2;
- if(cent>10)return 1;
+ if(fDebug>3) printf("centrality: %f\n",cent);
+
+ return GetCentralityClass(cent);
+
+}
+
+//________________________________________________________________________
+Int_t AliPWG4HighPtTrackQA::GetCentralityClass(Float_t cent) {
+ //
+ // Get centrality class
+ //
+
+ if(cent<0) return 5; // OB - cent sometimes negative
+ if(cent>80) return 4;
+ if(cent>50) return 3;
+ if(cent>30) return 2;
+ if(cent>10) return 1;
return 0;
}
}
track->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
}
+ else if(fTrackType==5 || fTrackType==6) {
+ if(fTrackCuts->AcceptTrack(esdtrack)) {
+ continue;
+ }
+ else {
+ if( !(fTrackCutsITSLoose->AcceptTrack(esdtrack)) && fTrackCutsTPConly->AcceptTrack(esdtrack) ) {
+
+ if(fTrackType==5) {
+ //use TPConly constrained track
+ track = AliESDtrackCuts::GetTPCOnlyTrack(fESD,esdtrack->GetID());
+ AliExternalTrackParam exParam;
+ Bool_t relate = track->RelateToVertexTPC(fVtx,fESD->GetMagneticField(),kVeryBig,&exParam);
+ if( !relate ) {
+ fh1NTracksReject->Fill("relate",1);
+ delete track;
+ continue;
+ }
+ track->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
+ }
+ else if(fTrackType==6) {
+ //use global constrained track
+ track->Set(esdtrack->GetConstrainedParam()->GetX(),esdtrack->GetConstrainedParam()->GetAlpha(),esdtrack->GetConstrainedParam()->GetParameter(),esdtrack->GetConstrainedParam()->GetCovariance());
+
+ }
+ }
+ }
+ }
else
track = esdtrack;
if(!track) {
- if(fTrackType==1 || fTrackType==2 || fTrackType==4) delete track;
+ // if(fTrackType==1 || fTrackType==2 || fTrackType==4) delete track;
continue;
}
fPtAll->Fill(track->Pt());
- if (!(fTrackCuts->AcceptTrack(track)) && fTrackType!=4) {
+ if (!(fTrackCuts->AcceptTrack(track)) && fTrackType!=4 && fTrackType!=5 && fTrackType!=6) {
fh1NTracksReject->Fill("trackCuts",1);
if(fTrackType==1 || fTrackType==2) delete track;
continue;
}
- //Cut out laser tracks
- if(track->GetTPCsignal()<10) { //Cut on laser tracks
- fh1NTracksReject->Fill("laser",1);
- if(fTrackType==1 || fTrackType==2 || fTrackType==4) delete track;
- continue;
- }
-
fh1NTracksSel->Fill(0.);
fVariables->Reset(0.);
if(fVariables->At(5)>0.) fVariables->SetAt(track->GetTPCchi2()/fVariables->At(5),10);
- //cout << "#crossed rows (1): " << track->GetTPCClusterInfo(1) << endl;
- //cout << "#crossed rows (2): " << track->GetTPCClusterInfo(2) << endl;
fVariables->SetAt(track->GetTPCClusterInfo(2,1),11); //#crossed rows
- Float_t crossedRowsTPCNClsF = track->GetTPCClusterInfo(2,0);
- //if(track->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/track->GetTPCNclsF();
+ Float_t crossedRowsTPCNClsF = 1.;//track->GetTPCClusterInfo(2,0);
+ if(track->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/track->GetTPCNclsF();
fVariables->SetAt(crossedRowsTPCNClsF,12);//(#crossed rows)/(#findable clusters)
fVariables->SetAt(track->GetSigmaY2(),13);
fVariables->SetAt(track->GetSigmaZ2(),14);
// int mult = fTrackCuts->CountAcceptedTracks(fESD);
- if(fTrackType==1 || fTrackType==2 || fTrackType==4) delete track;
+ if(fTrackType==1 || fTrackType==2 || fTrackType==4 || fTrackType==5) delete track;
}//track loop