"V0FinderType", // 0
"EtaCut", // 1
"MinRCut", // 2
+ "EtaForPhiCut", // 3
+ "MinPhiCut", // 4
+ "MaxPhiCut", // 5
"SinglePtCut", // 3
"ClsTPCCut", // 4
"ededxSigmaCut", // 5
fMinR(0),
fEtaCut(0.9),
fEtaCutMin(-0.1),
+ fEtaForPhiCutMin(-10.),
+ fEtaForPhiCutMax(10.),
+ fMinPhiCut(0.),
+ fMaxPhiCut(100.),
+ fDoShrinkTPCAcceptance(kFALSE),
fPtCut(0.02),
fSinglePtCut(0),
fMaxZ(1000),
fMinR(ref.fMinR),
fEtaCut(ref.fEtaCut),
fEtaCutMin(ref.fEtaCutMin),
+ fEtaForPhiCutMin(ref.fEtaForPhiCutMin),
+ fEtaForPhiCutMax(ref.fEtaForPhiCutMax),
+ fMinPhiCut(ref.fMinPhiCut),
+ fMaxPhiCut(ref.fMaxPhiCut),
+ fDoShrinkTPCAcceptance(ref.fDoShrinkTPCAcceptance),
fPtCut(ref.fPtCut),
fSinglePtCut(ref.fSinglePtCut),
fMaxZ(ref.fMaxZ),
hArmenterosafter=new TH2F(Form("Armenteros_after %s",GetCutNumber().Data()),"Armenteros_after",200,-1,1,250,0,0.25);
fHistograms->Add(hArmenterosafter);
- hAcceptanceCuts=new TH1F(Form("PhotonAcceptanceCuts %s",GetCutNumber().Data()),"PhotonAcceptanceCuts",10,-0.5,9.5);
+ hAcceptanceCuts=new TH1F(Form("PhotonAcceptanceCuts %s",GetCutNumber().Data()),"PhotonAcceptanceCuts",11,-0.5,10.5);
hAcceptanceCuts->GetXaxis()->SetBinLabel(1,"in");
hAcceptanceCuts->GetXaxis()->SetBinLabel(2,"maxR");
hAcceptanceCuts->GetXaxis()->SetBinLabel(3,"minR");
hAcceptanceCuts->GetXaxis()->SetBinLabel(4,"line");
hAcceptanceCuts->GetXaxis()->SetBinLabel(5,"maxZ");
hAcceptanceCuts->GetXaxis()->SetBinLabel(6,"eta");
- hAcceptanceCuts->GetXaxis()->SetBinLabel(7,"minpt");
- hAcceptanceCuts->GetXaxis()->SetBinLabel(8,"out");
+ hAcceptanceCuts->GetXaxis()->SetBinLabel(7,"phisector");
+ hAcceptanceCuts->GetXaxis()->SetBinLabel(8,"minpt");
+ hAcceptanceCuts->GetXaxis()->SetBinLabel(9,"out");
fHistograms->Add(hAcceptanceCuts);
// dEdx Cuts
}
}
cutIndex++;
+
+ if (fDoShrinkTPCAcceptance){
+ if(photon->GetPhotonEta() > fEtaForPhiCutMin && photon->GetPhotonEta() < fEtaForPhiCutMax ){
+ if( photon->GetPhotonPhi() > fMinPhiCut && photon->GetPhotonPhi() < fMaxPhiCut ) {
+ if(hAcceptanceCuts)hAcceptanceCuts->Fill(cutIndex);
+ return kFALSE;
+ }
+ }
+ }
+ cutIndex++;
+
+
if(photon->GetPhotonPt()<fPtCut){
if(hAcceptanceCuts)hAcceptanceCuts->Fill(cutIndex);
return kFALSE;
return kTRUE;
} else return kFALSE;
- case kededxSigmaCut:
- if( SetTPCdEdxCutElectronLine(value)) {
- fCuts[kededxSigmaCut] = value;
+ case ketaCut:
+ if( SetEtaCut(value)) {
+ fCuts[ketaCut] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
- case kpidedxSigmaCut:
- if( SetTPCdEdxCutPionLine(value)) {
- fCuts[kpidedxSigmaCut] = value;
+ case kRCut:
+ if( SetRCut(value)) {
+ fCuts[kRCut] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
-
- case kpiMomdedxSigmaCut:
- if( SetMinMomPiondEdxCut(value)) {
- fCuts[kpiMomdedxSigmaCut] = value;
+
+ case kEtaForPhiSector:
+ if( SetEtaForPhiCut(value)) {
+ fCuts[kEtaForPhiSector] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
-
- case kchi2GammaCut:
- if( SetChi2GammaCut(value)) {
- fCuts[kchi2GammaCut] = value;
+ case kMinPhiSector:
+ if( SetMinPhiSectorCut(value)) {
+ fCuts[kMinPhiSector] = value;
+ UpdateCutString();
+ return kTRUE;
+ } else return kFALSE;
+ case kMaxPhiSector:
+ if( SetMaxPhiSectorCut(value)) {
+ fCuts[kMaxPhiSector] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
UpdateCutString();
return kTRUE;
} else return kFALSE;
-
- case ketaCut:
- if( SetEtaCut(value)) {
- fCuts[ketaCut] = value;
+
+ case kededxSigmaCut:
+ if( SetTPCdEdxCutElectronLine(value)) {
+ fCuts[kededxSigmaCut] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
- case kLowPRejectionSigmaCut:
- if( SetLowPRejectionCuts(value)) {
- fCuts[kLowPRejectionSigmaCut] = value;
+ case kpidedxSigmaCut:
+ if( SetTPCdEdxCutPionLine(value)) {
+ fCuts[kpidedxSigmaCut] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
- case kQtMaxCut:
- if( SetQtMaxCut(value)) {
- fCuts[kQtMaxCut] = value;
+ case kpiMomdedxSigmaCut:
+ if( SetMinMomPiondEdxCut(value)) {
+ fCuts[kpiMomdedxSigmaCut] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
return kTRUE;
} else return kFALSE;
- case kRCut:
- if( SetRCut(value)) {
- fCuts[kRCut] = value;
+ case kLowPRejectionSigmaCut:
+ if( SetLowPRejectionCuts(value)) {
+ fCuts[kLowPRejectionSigmaCut] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
UpdateCutString();
return kTRUE;
} else return kFALSE;
+
+ case kQtMaxCut:
+ if( SetQtMaxCut(value)) {
+ fCuts[kQtMaxCut] = value;
+ UpdateCutString();
+ return kTRUE;
+ } else return kFALSE;
- case kdoPhotonAsymmetryCut:
- if( SetPhotonAsymmetryCut(value)) {
- fCuts[kdoPhotonAsymmetryCut] = value;
+
+ case kchi2GammaCut:
+ if( SetChi2GammaCut(value)) {
+ fCuts[kchi2GammaCut] = value;
UpdateCutString();
return kTRUE;
} else return kFALSE;
UpdateCutString();
return kTRUE;
} else return kFALSE;
+
+ case kdoPhotonAsymmetryCut:
+ if( SetPhotonAsymmetryCut(value)) {
+ fCuts[kdoPhotonAsymmetryCut] = value;
+ UpdateCutString();
+ return kTRUE;
+ } else return kFALSE;
case kCosPAngle:
if( SetCosPAngleCut(value)) {
return kTRUE;
} else return kFALSE;
-
case kElecShare:
if( SetSharedElectronCut(value)) {
fCuts[kElecShare] = value;
return kTRUE;
} else return kFALSE;
-
-
-
case kNCuts:
AliError("Cut id out of range");
return kFALSE;
if (!fUseCorrectedTPCClsInfo) printf("\t # TPC clusters > %3.2f \n", fMinClsTPC);
if (fEtaCutMin > -0.1) printf("\t %3.2f < eta_{e} < %3.2f\n", fEtaCutMin, fEtaCut );
else printf("\t eta_{e} < %3.2f\n", fEtaCut );
+ printf("\t reject: %3.2f < phi < %3.2f with %3.2f < eta < %3.2f \n", fMinPhiCut, fMaxPhiCut, fEtaForPhiCutMin, fEtaForPhiCutMax);
printf("\t p_{T,e} > %3.2f\n", fSinglePtCut );
printf("\t TPC refit \n");
printf("\t no kinks \n");
return kTRUE;
}
+///________________________________________________________________________
+Bool_t AliConversionPhotonCuts::SetEtaForPhiCut(Int_t etaPhiCut) {
+
+ switch(etaPhiCut) {
+ case 0: //no specific eta range selected, full eta range
+ fEtaForPhiCutMin = -fEtaCut;
+ fEtaForPhiCutMax = fEtaCut;
+ break;
+ case 1: //eta < 0 only
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fEtaForPhiCutMin = -fEtaCut;
+ fEtaForPhiCutMax = 0.;
+ break;
+ case 2://eta > 0 only
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fEtaForPhiCutMin = 0.;
+ fEtaForPhiCutMax = fEtaCut;
+ break;
+ default:
+ AliError(Form("EtaForPhiCut not defined %d",etaPhiCut));
+ return kFALSE;
+ }
+
+ return kTRUE;
+}
+
+///________________________________________________________________________
+Bool_t AliConversionPhotonCuts::SetMinPhiSectorCut(Int_t minPhiCut) {
+
+ switch(minPhiCut) {
+ case 0:
+ fMinPhiCut = 6.3; //no cut on phi
+ break;
+ case 1:
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fMinPhiCut = 1.7; //OROC C08
+ break;
+ case 2:
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fMinPhiCut = 4.4; //EMCal
+ break;
+ case 3:
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fMinPhiCut = 1.0; //PHOS
+ break;
+ default:
+ AliError(Form("MinPhiCut not defined %d",minPhiCut));
+ return kFALSE;
+ }
+
+ return kTRUE;
+}
+
+///________________________________________________________________________
+Bool_t AliConversionPhotonCuts::SetMaxPhiSectorCut(Int_t maxPhiCut) {
+
+ switch(maxPhiCut) {
+ case 0:
+ fMaxPhiCut = 0.; //no cut
+ break;
+ case 1:
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fMaxPhiCut = 4.3; //OROC C08
+ break;
+ case 2:
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fMaxPhiCut = 5.8; //EMCal
+ break;
+ case 3:
+ if (!fDoShrinkTPCAcceptance) fDoShrinkTPCAcceptance = kTRUE;
+ fMaxPhiCut = 3.0; //PHOS
+ break;
+ default:
+ AliError(Form("MaxPhiCut not defined %d",maxPhiCut));
+ return kFALSE;
+ }
+
+ return kTRUE;
+}
+
+
///________________________________________________________________________
Bool_t AliConversionPhotonCuts::SetSinglePtCut(Int_t singlePtCut)
{ // Set Cut
enum cutIds {
kv0FinderType,
ketaCut,
- kRCut,
+ kRCut,
+ kEtaForPhiSector,
+ kMinPhiSector,
+ kMaxPhiSector,
ksinglePtCut,
kclsTPCCut,
kededxSigmaCut,
Bool_t SpecificTrackCuts(AliESDtrack * negTrack, AliESDtrack * posTrack,Int_t &cutIndex);
Bool_t AcceptanceCuts(AliConversionPhotonBase *photon);
Bool_t AcceptanceCut(TParticle *particle, TParticle * ePos,TParticle* eNeg);
+ Bool_t PhiSectorCut(AliConversionPhotonBase * photon);
Bool_t dEdxCuts(AliVTrack * track);
Bool_t ArmenterosQtCut(AliConversionPhotonBase *photon);
Bool_t AsymmetryCut(AliConversionPhotonBase *photon,AliVEvent *event);
Bool_t SetSinglePtCut(Int_t singlePtCut);
Bool_t SetTPCClusterCut(Int_t clsTPCCut);
Bool_t SetEtaCut(Int_t etaCut);
+ Bool_t SetEtaForPhiCut(Int_t etaPhiCut);
+ Bool_t SetMinPhiSectorCut(Int_t minPhiCut);
+ Bool_t SetMaxPhiSectorCut(Int_t maxPhiCut);
Bool_t SetMinMomPiondEdxCut(Int_t piMinMomdedxSigmaCut);
Bool_t SetMaxMomPiondEdxCut(Int_t piMaxMomdedxSigmaCut);
Bool_t SetLowPRejectionCuts(Int_t LowPRejectionSigmaCut);
Double_t fMinR; // r cut
Double_t fEtaCut; // eta cut
Double_t fEtaCutMin; // eta cut
+ Float_t fEtaForPhiCutMin; // eta cut for phi sector selection
+ Float_t fEtaForPhiCutMax; // eta cut for phi sector selection
+ Float_t fMinPhiCut; // phi sector cut
+ Float_t fMaxPhiCut; // phi sector cut
+ Bool_t fDoShrinkTPCAcceptance; // Flag for shrinking the TPC acceptance due to different reasons
Double_t fPtCut; // pt cut
Double_t fSinglePtCut; // pt cut for electron/positron
Double_t fMaxZ; // z cut
private:
- ClassDef(AliConversionPhotonCuts,1)
+ ClassDef(AliConversionPhotonCuts,2)
};