X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliAnalysisTaskJetCluster.cxx;h=270b6140abd53242c739aaca74e0cefc4ef904a4;hb=92fabd039e41091628d7854f3b4fb02e5b795f5a;hp=76cbbe1d65809cd16b6887acf3ab7d936009eaff;hpb=a998fc5ae86376cc86f27e8d98a03c8a88aabfdf;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliAnalysisTaskJetCluster.cxx b/JETAN/AliAnalysisTaskJetCluster.cxx index 76cbbe1d658..270b6140abd 100644 --- a/JETAN/AliAnalysisTaskJetCluster.cxx +++ b/JETAN/AliAnalysisTaskJetCluster.cxx @@ -118,6 +118,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(): fAvgTrials(1), fExternalWeight(1), fTrackEtaWindow(0.9), + fRequireITSRefit(0), fRecEtaWindow(0.5), fTrackPtCut(0.), fJetOutputMinPt(0.150), @@ -285,6 +286,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name): fAvgTrials(1), fExternalWeight(1), fTrackEtaWindow(0.9), + fRequireITSRefit(0), fRecEtaWindow(0.5), fTrackPtCut(0.), fJetOutputMinPt(0.150), @@ -907,8 +909,13 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/) //Check if information is provided detector level effects if(!fMomResH1 || !fMomResH2 || !fMomResH3) fUseTrPtResolutionSmearing = kFALSE; - if(!fhEffH1 || !fhEffH2 || !fhEffH3 ) fUseDiceEfficiency = kFALSE; - if( fEfficiencyFixed < 1. ) fUseDiceEfficiency = kTRUE; + if( fEfficiencyFixed < 1. ) { + if (!fUseDiceEfficiency) + fUseDiceEfficiency = 1; // 1 is the default; 2 can be set by user + } + else { + if(!fhEffH1 || !fhEffH2 || !fhEffH3 ) fUseDiceEfficiency = kFALSE; + } Bool_t selectEvent = false; Bool_t physicsSelection = true;// handled by the framework(fInputHandler->IsEventSelected()&AliVEvent::kMB)==AliVEvent::kMB; @@ -996,6 +1003,7 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/) Int_t nT = GetListOfTracks(&recParticles,fTrackTypeRec); Float_t nCh = recParticles.GetEntries(); + Float_t nGen=genParticles.GetEntries(); fh1Nch->Fill(nCh); if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,recParticles.GetEntries()); nT = GetListOfTracks(&genParticles,fTrackTypeGen); @@ -1033,6 +1041,9 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/) Double_t rnd = fRandom->Uniform(1.); if( fEfficiencyFixed<1. ) { sumEff = fEfficiencyFixed; + if (fUseDiceEfficiency == 2) { + sumEff = (nCh - fEfficiencyFixed*nGen) / nCh; // rescale eff; fEfficiencyFixed is wrt to nGen, but dicing is fraction of nCh + } } else { pT = vp->Pt(); @@ -1876,6 +1887,7 @@ Int_t AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){ if(fDebug>10)Printf("%s:%d Not matching filter %d/%d %d/%d",(char*)__FILE__,__LINE__,it,aod->GetNumberOfTracks(),fFilterMask,tr->GetFilterMap()); continue; } + if(fRequireITSRefit){if((tr->GetStatus()&AliESDtrack::kITSrefit)==0)continue;} if(TMath::Abs(tr->Eta())>fTrackEtaWindow){ if(fDebug>10)Printf("%s:%d Not matching eta %d/%d",(char*)__FILE__,__LINE__,it,aod->GetNumberOfTracks()); continue; @@ -1910,6 +1922,7 @@ Int_t AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){ else if(fFilterType == 1)bGood = trackAOD->IsHybridTPCConstrainedGlobal(); else if(fFilterType == 2)bGood = trackAOD->IsHybridGlobalConstrainedGlobal(); if((fFilterMask>0)&&((!trackAOD->TestFilterBit(fFilterMask)||(!bGood))))continue; + if(fRequireITSRefit){if((trackAOD->GetStatus()&AliESDtrack::kITSrefit)==0)continue;} if(TMath::Abs(trackAOD->Eta())>fTrackEtaWindow) continue; if(trackAOD->Pt()Pt()); @@ -1931,39 +1944,35 @@ Int_t AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){ AliVParticle *track = dynamic_cast ((*aodExtraTracks)[it]); AliAODMCParticle *partmc = dynamic_cast ((*aodExtraTracks)[it]); if (!track) { - if(fDebug) printf("track %d does not exist\n",it); + if(fDebug>10) printf("track %d does not exist\n",it); continue; } - - if(partmc && !partmc->IsPhysicalPrimary())continue; + if(!partmc) continue; + if(!partmc->IsPhysicalPrimary())continue; if (track->Pt()2) printf("track %d has too low pt %.2f\n",it,track->Pt()); + if(fDebug>10) printf("track %d has too low pt %.2f\n",it,track->Pt()); continue; } + /* + AliAODTrack *trackAOD = dynamic_cast((*aodExtraTracks)[it]);//(track); - Float_t mom[3]; - mom[0] = track->Pt(); - mom[1] = track->Phi(); - mom[2] = track->Theta(); - - AliAODTrack *trackAOD = dynamic_cast (track); if(!trackAOD) { - if(fDebug) printf("trackAOD %d does not exist\n",it); + if(fDebug>10) printf("trackAOD %d does not exist\n",it); continue; } trackAOD->SetFlags(AliESDtrack::kEmbedded); - trackAOD->SetP(mom,kFALSE); trackAOD->SetFilterMap(fFilterMask); + */ + if(fDebug>10) printf("pt extra track %.2f \n", track->Pt()); - if(fDebug) printf("pt extra track %.2f \n", trackAOD->Pt()); - - if(TMath::Abs(trackAOD->Eta())>fTrackEtaWindow) continue; - if(trackAOD->Pt()Add(trackAOD); + if(TMath::Abs(track->Eta())>fTrackEtaWindow) continue; + if(track->Pt()Add(track); + iCount++; } } @@ -2018,10 +2027,60 @@ Int_t AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){ } } }// AODMCparticle + else if (type == kTrackAODMCHF){ + + AliAODEvent *aod = 0; + if(fUseAODMCInput)aod = dynamic_cast(InputEvent()); + else aod = AODEvent(); + if(!aod)return iCount; + TClonesArray *tca = dynamic_cast(aod->FindListObject(AliAODMCParticle::StdBranchName())); + if(!tca)return iCount; + for(int it = 0;it < tca->GetEntriesFast();++it){ + AliAODMCParticle *part = (AliAODMCParticle*)(tca->At(it)); + if(!part) continue; + int partpdg= part->PdgCode(); + if(!part->IsPhysicalPrimary() && !IsBMeson(partpdg) && !IsDMeson(partpdg) )continue; + + if (IsBMeson(partpdg) || IsDMeson(partpdg)) { + iCount+= AddDaughters( list , part,tca); + } + else { + + if(part->Pt()Eta())>fTrackEtaWindow) continue; + if(part->Charge()==0) continue; + + if((part->Pt()>=fTrackPtCut) && (TMath::Abs(part->Eta())<=fTrackEtaWindow) && (part->Charge()!=0))list->Add(part); + iCount++; + } + } + } + list->Sort(); return iCount; } +Int_t AliAnalysisTaskJetCluster::AddDaughters(TList * list, AliAODMCParticle *part, TClonesArray * tca){ + Int_t count=0; + Int_t nDaugthers = part->GetNDaughters(); + for(Int_t i=0;i< nDaugthers;++i){ + AliAODMCParticle *partdaughter = (AliAODMCParticle*)(tca->At(i)); + if(!partdaughter) continue; + if(partdaughter->Pt()Eta())>fTrackEtaWindow)continue; + if(partdaughter->Charge()==0)continue; + + if(!IsDMeson(partdaughter->PdgCode()) && !IsBMeson(partdaughter->PdgCode()) ){ + list->Add(partdaughter); + count++; + } + else count+=AddDaughters(list,part,tca); + } +return count; +} + + + void AliAnalysisTaskJetCluster::LoadTrPtResolutionRootFileFromOADB() { if (!gGrid) { @@ -2179,3 +2238,21 @@ void AliAnalysisTaskJetCluster::FitMomentumResolution() { } */ + + +bool AliAnalysisTaskJetCluster::IsBMeson(int pc){ + int bPdG[] = {511,521,10511,10521,513,523,10513,10523,20513,20523,20513,20523,515,525,531, + 10531,533,10533,20533,535,541,10541,543,10543,20543,545,551,10551,100551, + 110551,200551,210551,553,10553,20553,30553,100553,110553,120553,130553,200553,210553,220553, + 300553,9000533,9010553,555,10555,20555,100555,110555,120555,200555,557,100557}; + for(int i=0;i< (int)(sizeof(bPdG)/sizeof(int));++i) if(abs(pc) == bPdG[i]) return true; +return false; +} +bool AliAnalysisTaskJetCluster::IsDMeson(int pc){ + int bPdG[] = {411,421,10411,10421,413,423,10413,10423,20431,20423,415, + 425,431,10431,433,10433,20433,435,441,10441,100441,443,10443,20443, + 100443,30443,9000443,9010443,9020443,445,100445}; + for(int i=0;i< (int)(sizeof(bPdG)/sizeof(int));++i) if(abs(pc) == bPdG[i]) return true; +return false; +} +