fCutSPDvertexerAnomaly(kFALSE),
fCutSPDTRKVtxZ(kFALSE),
fCutTPCmultiplicityOutliers(kFALSE),
+ fCutTPCmultiplicityOutliersAOD(kFALSE),
fUseCentralityUnchecked(kFALSE),
fCentralityPercentileMethod(kTPConly),
fCutZDCtiming(kFALSE),
fCutSPDvertexerAnomaly(kFALSE),
fCutSPDTRKVtxZ(kFALSE),
fCutTPCmultiplicityOutliers(kFALSE),
+ fCutTPCmultiplicityOutliersAOD(kFALSE),
fUseCentralityUnchecked(kFALSE),
fCentralityPercentileMethod(kTPConly),
fCutZDCtiming(kFALSE),
fCutSPDvertexerAnomaly(that.fCutSPDvertexerAnomaly),
fCutSPDTRKVtxZ(that.fCutSPDTRKVtxZ),
fCutTPCmultiplicityOutliers(that.fCutTPCmultiplicityOutliers),
+ fCutTPCmultiplicityOutliersAOD(that.fCutTPCmultiplicityOutliersAOD),
fUseCentralityUnchecked(that.fUseCentralityUnchecked),
fCentralityPercentileMethod(that.fCentralityPercentileMethod),
fCutZDCtiming(that.fCutZDCtiming),
fCutSPDvertexerAnomaly=that.fCutSPDvertexerAnomaly;
fCutSPDTRKVtxZ=that.fCutSPDTRKVtxZ;
fCutTPCmultiplicityOutliers=that.fCutTPCmultiplicityOutliers;
+ fCutTPCmultiplicityOutliersAOD=that.fCutTPCmultiplicityOutliersAOD;
fUseCentralityUnchecked=that.fUseCentralityUnchecked;
fCentralityPercentileMethod=that.fCentralityPercentileMethod;
fCutZDCtiming=that.fCutZDCtiming;
QAbefore(0)->Fill(pvtxz);
QAbefore(1)->Fill(multGlobal,multTPC);
}
- if ( (fCutTPCmultiplicityOutliers && esdevent) || (fCutTPCmultiplicityOutliers && aodevent) )
+ if ( fCutTPCmultiplicityOutliers && esdevent )
{
//this is pretty slow as we check the event track by track twice
//this cut will work for 2010 PbPb data and is dependent on
if (multTPC > ( 23+1.216*multGlobal)) {pass=kFALSE;}
if (multTPC < (-20+1.087*multGlobal)) {pass=kFALSE;}
}
-
- /* commenting conflicting code, fix is pending
- if(aodevent && fData2011){
- if (multTPC > ( 62.87+1.78*multGlobal)) {pass=kFALSE;}
- if (multTPC < (-36.73+1.48*multGlobal)) {pass=kFALSE;}
+ }
+
+
+ if(fCutTPCmultiplicityOutliersAOD && aodevent) {
+ // the AliFlowTrackCuts::Count() function will not work here, since the correlation cut uses different
+ // track cuts
+ multTPC = 0; // tpc mult estimate
+ Int_t multGlob = 0; // global multiplicity
+ Int_t nGoodTracks(aodevent->GetNumberOfTracks());
+ if(!fData2011) { // cut on outliers
+ for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) { // fill tpc mult
+ AliAODTrack* trackAOD = aodevent->GetTrack(iTracks);
+ if (!trackAOD) continue;
+ if (!(trackAOD->TestFilterBit(1))) continue;
+ if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.2)) continue;
+ multTPC++;
+ }
+ for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) { // fill global mult
+ AliAODTrack* trackAOD = aodevent->GetTrack(iTracks);
+ if (!trackAOD) continue;
+ if (!(trackAOD->TestFilterBit(16))) continue;
+ if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.1)) continue;
+ Double_t b[2] = {-99., -99.};
+ Double_t bCov[3] = {-99., -99., -99.};
+ if (!(trackAOD->PropagateToDCA(aodevent->GetPrimaryVertex(), aodevent->GetMagneticField(), 100., b, bCov))) continue;
+ if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
+ multGlob++;
+ } //track loop
+ if(! (multTPC > (-40.3+1.22*multGlob) && multTPC < (32.1+1.59*multGlob))) return kFALSE;
}
- if(aodevent && !fData2011){
- if (multTPC > ( 32.1+1.59*multGlobal)) {pass=kFALSE;}
- if (multTPC < (-40.3+1.22*multGlobal)) {pass=kFALSE;}
+ if(fData2011) { // cut on outliers
+ for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) { // fill tpc mult
+ AliAODTrack* trackAOD = aodevent->GetTrack(iTracks);
+ if (!trackAOD) continue;
+ if (!(trackAOD->TestFilterBit(1))) continue;
+ if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.2)) continue;
+ multTPC++;
+ }
+ for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) { // fill global mult
+ AliAODTrack* trackAOD = aodevent->GetTrack(iTracks);
+ if (!trackAOD) continue;
+ if (!(trackAOD->TestFilterBit(16))) continue;
+ if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.1)) continue;
+ Double_t b[2] = {-99., -99.};
+ Double_t bCov[3] = {-99., -99., -99.};
+ if (!(trackAOD->PropagateToDCA(aodevent->GetPrimaryVertex(), aodevent->GetMagneticField(), 100., b, bCov))) continue;
+ if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
+ multGlob++;
+ } //track loop
+ if(! (multTPC > (-36.73 + 1.48*multGlob) && multTPC < (62.87 + 1.78*multGlob))) return kFALSE;
}
- */
}
+
+
if (fCutNContributors)
{
if (ncontrib < fNContributorsMin || ncontrib >= fNContributorsMax) pass=kFALSE;
void SetCutZDCtiming(Bool_t c=kTRUE) {fCutZDCtiming=c;}
void SetCutSPDTRKVtxZ(Bool_t b=kTRUE) {fCutSPDTRKVtxZ=b;}
void SetCutTPCmultiplicityOutliers(Bool_t b=kTRUE) {fCutTPCmultiplicityOutliers=b;}
+ void SetCutTPCmultiplicityOutliersAOD(Bool_t b=kTRUE) {fCutTPCmultiplicityOutliersAOD=b;}
Int_t GetNumberOfTracksMax() const {return fNumberOfTracksMax;}
Int_t GetNumberOfTracksMin() const {return fNumberOfTracksMin;}
void SetUseCentralityUnchecked(Bool_t b=kTRUE) {fUseCentralityUnchecked=b;}
Float_t GetCentrality(AliVEvent* event, AliMCEvent* mcEvent);
- void SetUsedDataset(Bool_t b=kTRUE) {fData2011=b;}
+ void SetUsedDataset(Bool_t b=kTRUE) {fData2011=b;} // confusing name, better use different interface
+ void SetLHC10h(Bool_t b=kTRUE) {fData2011=(!b);} // TODO let cut object determine runnumber and period
+ void SetLHC11h(Bool_t b=kTRUE) {fData2011=b;} // use this only as 'manual override'
+
void Browse(TBrowser* b);
Long64_t Merge(TCollection* list);
Bool_t fCutSPDvertexerAnomaly; //cut on the spd vertexer anomaly
Bool_t fCutSPDTRKVtxZ; //require compatibility between SPDvertexz TRKvertexz
Bool_t fCutTPCmultiplicityOutliers; //cut TPC multiplicity outliers
+ Bool_t fCutTPCmultiplicityOutliersAOD; // cut TPC outliers in 10h or 11h aod
Bool_t fUseCentralityUnchecked; //use the unchecked method
refMultMethod fCentralityPercentileMethod; //where to get the percentile from
Bool_t fCutZDCtiming; //cut on ZDC timing
TH2F *fhistTPCvsGlobalMult; //!correlation between TPCMult and GlobalMult
Bool_t fData2011; //2011 data is used
- ClassDef(AliFlowEventCuts,5)
+ ClassDef(AliFlowEventCuts,6)
};
#endif