X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG%2FEMCAL%2FAliEmcalEsdTrackFilterTask.cxx;h=0f19e8fa2d265845c61ffac121ffb35a57db6572;hb=310dd8e82890e0c08c3378bf235d3938d52236a4;hp=3bea7e0b5715e5c1220bc3ee9d499e0e3ec43f04;hpb=69af4d42c2e00bdeef1a51db2e06f57947baf1ad;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG/EMCAL/AliEmcalEsdTrackFilterTask.cxx b/PWG/EMCAL/AliEmcalEsdTrackFilterTask.cxx index 3bea7e0b571..0f19e8fa2d2 100644 --- a/PWG/EMCAL/AliEmcalEsdTrackFilterTask.cxx +++ b/PWG/EMCAL/AliEmcalEsdTrackFilterTask.cxx @@ -4,16 +4,17 @@ // // Author: C.Loizides +#include "AliEmcalEsdTrackFilterTask.h" #include +#include #include #include +#include #include #include #include #include -#include -#include "AliEmcalEsdTrackFilterTask.h" ClassImp(AliEmcalEsdTrackFilterTask) @@ -27,6 +28,8 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask() : fIncludeNoITS(kTRUE), fDoPropagation(kFALSE), fDist(440), + fTrackEfficiency(1), + fIsMC(kFALSE), fEsdEv(0), fTracks(0) { @@ -43,6 +46,8 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask(const char *name) : fIncludeNoITS(kTRUE), fDoPropagation(kFALSE), fDist(440), + fTrackEfficiency(1), + fIsMC(kFALSE), fEsdEv(0), fTracks(0) { @@ -72,10 +77,14 @@ void AliEmcalEsdTrackFilterTask::UserCreateOutputObjects() fTracks = new TClonesArray("AliESDtrack"); fTracks->SetName(fTracksName); - if (!fEsdTrackCuts) { - AliInfo("No track cuts given, creating default (standard only TPC) cuts"); - fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); - fEsdTrackCuts->SetPtRange(0.15,1e3); + if (fDoSpdVtxCon) { + if (!fEsdTrackCuts) { + AliInfo("No track cuts given, creating default (standard only TPC) cuts"); + fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); + fEsdTrackCuts->SetPtRange(0.15,1e3); + } + } else { + AliWarning("No track cuts given, but maybe this is indeed intended?"); } } @@ -101,7 +110,7 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *) if (!(InputEvent()->FindListObject(fTracksName))) InputEvent()->AddObject(fTracks); - if (!fHybridTrackCuts) { // contrain TPC tracks to SPD vertex if fDoSpdVtxCon==kTRUE + if (!fHybridTrackCuts) { // constrain TPC tracks to SPD vertex if fDoSpdVtxCon==kTRUE am->LoadBranch("AliESDRun."); am->LoadBranch("AliESDHeader."); am->LoadBranch("Tracks"); @@ -121,8 +130,10 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *) AliESDtrack *etrack = fEsdEv->GetTrack(i); if (!etrack) continue; + if (!fEsdTrackCuts->AcceptTrack(etrack)) continue; + AliESDtrack *ntrack = AliESDtrackCuts::GetTPCOnlyTrack(fEsdEv,etrack->GetID()); if (!ntrack) continue; @@ -144,6 +155,15 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *) delete ntrack; continue; } + + if (fTrackEfficiency < 1) { + Double_t r = gRandom->Rndm(); + if (fTrackEfficiency < r) + continue; + } + + if (fDoPropagation) + AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,fDist); new ((*fTracks)[ntrnew++]) AliESDtrack(*ntrack); delete ntrack; } @@ -153,9 +173,19 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *) AliESDtrack *etrack = fEsdEv->GetTrack(i); if (!etrack) continue; - if (!fEsdTrackCuts->AcceptTrack(etrack)) + + if ((fEsdTrackCuts!=0) && !fEsdTrackCuts->AcceptTrack(etrack)) continue; - new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack); + + if (fTrackEfficiency < 1) { + Double_t r = gRandom->Rndm(); + if (fTrackEfficiency < r) + continue; + } + + AliESDtrack *ntrack = new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack); + if (fDoPropagation) + AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,fDist); } } @@ -169,34 +199,48 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *) continue; if (fEsdTrackCuts->AcceptTrack(etrack)) { - - new ((*fTracks)[ntrnew]) AliESDtrack(*etrack); - AliESDtrack *newTrack = static_cast(fTracks->At(ntrnew)); + if (fTrackEfficiency < 1) { + Double_t r = gRandom->Rndm(); + if (fTrackEfficiency < r) + continue; + } + AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack); if (fDoPropagation) AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,fDist); - //newTrack->SetTRDNchamberdEdx(0); todo + newTrack->SetBit(BIT(22),0); + newTrack->SetBit(BIT(23),0); + if (!fIsMC) newTrack->SetLabel(0); ++ntrnew; } else if (fHybridTrackCuts->AcceptTrack(etrack)) { - + if (!etrack->GetConstrainedParam()) + continue; UInt_t status = etrack->GetStatus(); - if (etrack->GetConstrainedParam() && ((status&AliESDtrack::kITSrefit)!=0 || fIncludeNoITS)) { - new ((*fTracks)[ntrnew]) AliESDtrack(*etrack); - AliESDtrack *newTrack = static_cast(fTracks->At(ntrnew)); - const AliExternalTrackParam* constrainParam = etrack->GetConstrainedParam(); - newTrack->Set(constrainParam->GetX(), - constrainParam->GetAlpha(), - constrainParam->GetParameter(), - constrainParam->GetCovariance()); - // if ((status&AliESDtrack::kITSrefit)==0) // todo - // newTrack->SetTRDNchamberdEdx(2); - // else - // newTrack->SetTRDNchamberdEdx(1); - if (fDoPropagation) - AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,fDist); - ++ntrnew; + if (!fIncludeNoITS && ((status&AliESDtrack::kITSrefit)==0)) + continue; + + if (fTrackEfficiency < 1) { + Double_t r = gRandom->Rndm(); + if (fTrackEfficiency < r) + continue; } + AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack); + if (fDoPropagation) + AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,fDist); + const AliExternalTrackParam* constrainParam = etrack->GetConstrainedParam(); + newTrack->Set(constrainParam->GetX(), + constrainParam->GetAlpha(), + constrainParam->GetParameter(), + constrainParam->GetCovariance()); + if ((status&AliESDtrack::kITSrefit)==0) { + newTrack->SetBit(BIT(22),0); //type 2 + newTrack->SetBit(BIT(23),1); + } else { + newTrack->SetBit(BIT(22),1); //type 1 + newTrack->SetBit(BIT(23),0); + } + if (!fIsMC) newTrack->SetLabel(0); + ++ntrnew; } } } } -