3 // Jet embedding from AOD task.
5 // Author: S.Aiola, C.Loizides
7 #include "AliJetEmbeddingFromAODTask.h"
9 // C++ standard library
15 #include <TClonesArray.h>
16 #include <TObjArray.h>
17 #include <TObjString.h>
21 #include <TStreamerInfo.h>
24 #include <TLorentzVector.h>
27 #include "AliVEvent.h"
28 #include "AliAODTrack.h"
29 #include "AliESDtrack.h"
30 #include "AliPicoTrack.h"
31 #include "AliVTrack.h"
32 #include "AliVCluster.h"
33 #include "AliVCaloCells.h"
34 #include "AliAODMCParticle.h"
35 #include "AliCentrality.h"
36 #include "AliVHeader.h"
37 #include "AliVVertex.h"
38 #include "AliAODHeader.h"
39 #include "AliFJWrapper.h"
41 #include "AliInputEventHandler.h"
42 #include "AliNamedString.h"
44 ClassImp(AliJetEmbeddingFromAODTask)
46 //________________________________________________________________________
47 AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask() :
48 AliJetModelBaseTask("AliJetEmbeddingFromAODTask"),
50 fRandomAccess(kFALSE),
57 fAODMCParticlesName(),
60 fTriggerMask(AliVEvent::kAny),
68 fJetConstituentMinPt(0),
72 fJetParticleLevel(kTRUE),
75 fParticleSelection(0),
76 fIncludeNoITS(kFALSE),
77 fCutMaxFractionSharedTPCClusters(0.4),
78 fUseNegativeLabels(kTRUE),
101 fHistRejectedEvents(0),
104 // Default constructor.
105 SetSuffix("AODEmbedding");
106 fAODfilterBits[0] = -1;
107 fAODfilterBits[1] = -1;
116 //________________________________________________________________________
117 AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask(const char *name, Bool_t drawqa) :
118 AliJetModelBaseTask(name, drawqa),
120 fRandomAccess(kFALSE),
121 fAODTreeName("aodTree"),
122 fAODHeaderName("header"),
123 fAODVertexName("vertices"),
124 fAODTrackName("tracks"),
126 fAODCellsName("emcalCells"),
127 fAODMCParticlesName(AliAODMCParticle::StdBranchName()),
130 fTriggerMask(AliVEvent::kAny),
138 fJetConstituentMinPt(0),
142 fJetParticleLevel(kTRUE),
145 fParticleSelection(0),
146 fIncludeNoITS(kFALSE),
147 fCutMaxFractionSharedTPCClusters(0.4),
148 fUseNegativeLabels(kTRUE),
153 fEsdTreeMode(kFALSE),
155 fCurrentAODFileID(0),
157 fPicoTrackVersion(0),
165 fCurrentAODEntry(-1),
167 fHistFileMatching(0),
168 fHistAODFileError(0),
171 fHistRejectedEvents(0),
174 // Standard constructor.
175 SetSuffix("AODEmbedding");
176 fAODfilterBits[0] = -1;
177 fAODfilterBits[1] = -1;
186 //________________________________________________________________________
187 AliJetEmbeddingFromAODTask::~AliJetEmbeddingFromAODTask()
191 if (fCurrentAODFile) {
192 fCurrentAODFile->Close();
193 delete fCurrentAODFile;
197 //________________________________________________________________________
198 void AliJetEmbeddingFromAODTask::UserCreateOutputObjects()
203 AliJetModelBaseTask::UserCreateOutputObjects();
205 fHistFileMatching = new TH2C("fHistFileMatching", "fHistFileMatching", fTotalFiles, -0.5, fTotalFiles - 0.5, fFileList->GetEntriesFast(), -0.5, fFileList->GetEntriesFast() -0.5);
206 fHistFileMatching->GetXaxis()->SetTitle("File no. (PYTHIA)");
207 fHistFileMatching->GetYaxis()->SetTitle("File no. (Embedded AOD)");
208 fHistFileMatching->GetZaxis()->SetTitle("counts");
209 fOutput->Add(fHistFileMatching);
211 fHistAODFileError = new TH1C("fHistAODFileError", "fHistAODFileError", fFileList->GetEntriesFast(), -0.5, fFileList->GetEntriesFast() -0.5);
212 fHistAODFileError->GetXaxis()->SetTitle("File no. (Embedded AOD)");
213 fHistAODFileError->GetYaxis()->SetTitle("counts");
214 fOutput->Add(fHistAODFileError);
216 fHistNotEmbedded = new TH1C("fHistNotEmbedded", "fHistNotEmbedded", fTotalFiles, -0.5, fTotalFiles - 0.5);
217 fHistNotEmbedded->GetXaxis()->SetTitle("File no. (PYTHIA)");
218 fHistNotEmbedded->GetYaxis()->SetTitle("counts");
219 fOutput->Add(fHistNotEmbedded);
221 fHistEmbeddingQA = new TH1F("fHistEmbeddingQA", "fHistEmbeddingQA", 2, 0, 2);
222 fHistEmbeddingQA->GetXaxis()->SetTitle("Event state");
223 fHistEmbeddingQA->GetYaxis()->SetTitle("counts");
224 fHistEmbeddingQA->GetXaxis()->SetBinLabel(1, "OK");
225 fHistEmbeddingQA->GetXaxis()->SetBinLabel(2, "Not embedded");
226 fOutput->Add(fHistEmbeddingQA);
228 fHistRejectedEvents = new TH1F("fHistRejectedEvents", "fHistRejectedEvents", 500, -0.5, 499.5);
229 fHistRejectedEvents->GetXaxis()->SetTitle("# of rejected events");
230 fHistRejectedEvents->GetYaxis()->SetTitle("counts");
231 fOutput->Add(fHistRejectedEvents);
233 PostData(1, fOutput);
236 //________________________________________________________________________
237 Bool_t AliJetEmbeddingFromAODTask::UserNotify()
239 TString path(fInputHandler->GetTree()->GetCurrentFile()->GetPath());
240 if (path.EndsWith("/"))
241 path.Remove(path.Length()-1);
242 path.Remove(path.Last('/'));
243 path.Remove(0, path.Last('/')+1);
245 AliWarning(Form("Could not extract file number from path %s", path.Data()));
248 fCurrentFileID = path.Atoi();
249 if (!fRandomAccess) {
250 fCurrentAODFileID = fFileList->GetEntriesFast() * fCurrentFileID / fTotalFiles-1;
251 AliInfo(Form("Start embedding from file ID %d", fCurrentAODFileID));
256 //________________________________________________________________________
257 Bool_t AliJetEmbeddingFromAODTask::ExecOnce()
259 if (fAODTreeName.Contains("aod"))
260 fEsdTreeMode = kFALSE;
262 fEsdTreeMode = kTRUE;
264 fAODFilePath = static_cast<AliNamedString*>(InputEvent()->FindListObject("AODEmbeddingFile"));
266 fAODFilePath = new AliNamedString("AODEmbeddingFile", "");
267 AliDebug(3,"Adding AOD embedding file path object to the event list...");
268 InputEvent()->AddObject(fAODFilePath);
271 return AliJetModelBaseTask::ExecOnce();
274 //________________________________________________________________________
275 Bool_t AliJetEmbeddingFromAODTask::OpenNextFile()
277 if (fCurrentAODFile) {
278 fCurrentAODFile->Close();
279 delete fCurrentAODFile;
285 while ((!fCurrentAODFile || fCurrentAODFile->IsZombie()) && i < fAttempts) {
286 if (i > 0 && fHistAODFileError) {
287 fHistAODFileError->Fill(fCurrentAODFileID);
290 fCurrentAODFile = GetNextFile();
294 if (!fCurrentAODFile || fCurrentAODFile->IsZombie()) {
295 AliError("Could not open AOD file to embed!");
299 const TList *clist = fCurrentAODFile->GetStreamerInfoCache();
301 TStreamerInfo *cinfo = static_cast<TStreamerInfo*>(clist->FindObject("AliPicoTrack"));
303 fPicoTrackVersion = cinfo->GetClassVersion();
305 fPicoTrackVersion = 0;
308 fCurrentAODTree = static_cast<TTree*>(fCurrentAODFile->Get(fAODTreeName));
309 if (!fCurrentAODTree) {
310 AliError(Form("Could not get tree %s from file %s", fAODTreeName.Data(), fCurrentAODFile->GetName()));
314 if (!fAODHeaderName.IsNull())
315 fCurrentAODTree->SetBranchAddress(fAODHeaderName, &fAODHeader);
317 if (!fAODVertexName.IsNull())
318 fCurrentAODTree->SetBranchAddress(fAODVertexName, &fAODVertex);
320 if (!fAODTrackName.IsNull())
321 fCurrentAODTree->SetBranchAddress(fAODTrackName, &fAODTracks);
323 if (!fAODClusName.IsNull())
324 fCurrentAODTree->SetBranchAddress(fAODClusName, &fAODClusters);
326 if (!fAODCellsName.IsNull())
327 fCurrentAODTree->SetBranchAddress(fAODCellsName, &fAODCaloCells);
329 if (!fAODMCParticlesName.IsNull())
330 fCurrentAODTree->SetBranchAddress(fAODMCParticlesName, &fAODMCParticles);
333 fCurrentAODEntry = TMath::Nint(gRandom->Rndm()*fCurrentAODTree->GetEntries());
335 fCurrentAODEntry = -1;
337 AliDebug(3,Form("Will start embedding from entry %d", fCurrentAODEntry+1));
339 if (fHistFileMatching)
340 fHistFileMatching->Fill(fCurrentFileID, fCurrentAODFileID-1);
347 //________________________________________________________________________
348 TFile* AliJetEmbeddingFromAODTask::GetNextFile()
351 fCurrentAODFileID = TMath::Nint(gRandom->Rndm()*fFileList->GetEntriesFast());
355 if (fCurrentAODFileID >= fFileList->GetEntriesFast()) {
356 AliError("No more file in the list!");
360 TObjString *objFileName = static_cast<TObjString*>(fFileList->At(fCurrentAODFileID));
361 TString fileName(objFileName->GetString());
363 if (fileName.BeginsWith("alien://") && !gGrid) {
364 AliInfo("Trying to connect to AliEn ...");
365 TGrid::Connect("alien://");
368 TString baseFileName(fileName);
369 if (baseFileName.Contains(".zip#")) {
370 Ssiz_t pos = baseFileName.Last('#');
371 baseFileName.Remove(pos);
374 if (gSystem->AccessPathName(baseFileName)) {
375 AliError(Form("File %s does not exist!", baseFileName.Data()));
379 AliDebug(3,Form("Trying to open file %s...", fileName.Data()));
380 TFile *file = TFile::Open(fileName);
382 if (!file || file->IsZombie()) {
383 AliError(Form("Unable to open file: %s!", fileName.Data()));
390 //________________________________________________________________________
391 Bool_t AliJetEmbeddingFromAODTask::GetNextEntry()
396 if (!fCurrentAODFile || !fCurrentAODTree || fCurrentAODEntry+1 >= fCurrentAODTree->GetEntries()) {
397 if (!OpenNextFile()) {
398 AliError("Could not open the next file!");
403 if (!fCurrentAODTree) {
404 AliError("Could not get the tree!");
409 fCurrentAODTree->GetEntry(fCurrentAODEntry);
412 if (attempts == 1000)
413 AliWarning("After 1000 attempts no event has been accepted by the event selection (trigger, centrality...)!");
415 } while (!IsAODEventSelected());
417 if (fHistRejectedEvents)
418 fHistRejectedEvents->Fill(attempts);
420 if (!fCurrentAODTree)
428 //________________________________________________________________________
429 Bool_t AliJetEmbeddingFromAODTask::IsAODEventSelected()
431 // AOD event selection.
433 if (!fEsdTreeMode && fAODHeader) {
434 AliAODHeader *aodHeader = static_cast<AliAODHeader*>(fAODHeader);
437 if (fTriggerMask != AliVEvent::kAny) {
438 UInt_t offlineTrigger = aodHeader->GetOfflineTrigger();
440 if ((offlineTrigger & fTriggerMask) == 0) {
441 AliDebug(2,Form("Event rejected due to physics selection. Event trigger mask: %d, trigger mask selection: %d.",
442 offlineTrigger, fTriggerMask));
447 // Centrality selection
448 if (fMinCentrality >= 0) {
449 AliCentrality *cent = aodHeader->GetCentralityP();
450 Float_t centVal = cent->GetCentralityPercentile("V0M");
451 if (centVal < fMinCentrality || centVal >= fMaxCentrality) {
452 AliDebug(2,Form("Event rejected due to centrality selection. Event centrality: %f, centrality range selection: %f to %f",
453 centVal, fMinCentrality, fMaxCentrality));
461 Double_t vert[3]={0};
462 ((AliVVertex*)fAODVertex->At(0))->GetXYZ(vert);
463 if (TMath::Abs(vert[2]) > fZVertexCut) {
464 AliDebug(2,Form("Event rejected due to Z vertex selection. Event Z vertex: %f, Z vertex cut: %f",
465 vert[2], fZVertexCut));
468 Double_t dist = TMath::Sqrt((vert[0]-fVertex[0])*(vert[0]-fVertex[0])+(vert[1]-fVertex[1])*(vert[1]-fVertex[1])+(vert[2]-fVertex[2])*(vert[2]-fVertex[2]));
469 if (dist > fMaxVertexDist) {
470 AliDebug(2,Form("Event rejected because the distance between the current and embedded verteces is > %f. "
471 "Current event vertex (%f, %f, %f), embedded event vertex (%f, %f, %f). Distance = %f",
472 fMaxVertexDist, fVertex[0], fVertex[1], fVertex[2], vert[0], vert[1], vert[2], dist));
478 // Particle selection
479 if ((fParticleSelection == 1 && FindParticleInRange(fAODTracks)==kFALSE) ||
480 (fParticleSelection == 2 && FindParticleInRange(fAODClusters)==kFALSE) ||
481 (fParticleSelection == 3 && FindParticleInRange(fAODMCParticles)==kFALSE))
488 if (fJetParticleLevel) {
490 jet = GetLeadingJet(fAODMCParticles);
492 AliWarning("Particle level jets selected, but not MC particles found. The jet event selection will be skipped.");
497 if (fAODTracks || fAODClusters)
498 jet = GetLeadingJet(fAODTracks, fAODClusters);
500 AliWarning("Detector level jets selected, but not tracks or clusters found. The jet event selection will be skipped.");
505 AliDebug(1, Form("Leading jet pt = %f", jet.Pt()));
506 if (jet.Pt() < fJetMinPt)
513 //________________________________________________________________________
514 Bool_t AliJetEmbeddingFromAODTask::FindParticleInRange(TClonesArray *array)
516 if (!array) return kFALSE;
518 if (array->GetClass()->InheritsFrom("AliVParticle")) {
519 const Int_t nentries = array->GetEntriesFast();
520 for (Int_t i = 0; i < nentries; i++) {
521 AliVParticle *part = static_cast<AliVParticle*>(array->At(i));
523 if (part->Pt() > fParticleMinPt && part->Pt() < fParticleMaxPt) return kTRUE;
526 else if (array->GetClass()->InheritsFrom("AliVCluster")) {
527 const Int_t nentries = array->GetEntriesFast();
528 for (Int_t i = 0; i < nentries; i++) {
529 AliVCluster *clus = static_cast<AliVCluster*>(array->At(i));
533 Double_t vert[3] = {0,0,0};
534 clus->GetMomentum(vect,vert);
536 if (vect.Pt() > fParticleMinPt && vect.Pt() < fParticleMaxPt) return kTRUE;
540 AliWarning(Form("Unable to do event selection based on particle pT: %s class type not recognized.",array->GetClass()->GetName()));
546 //________________________________________________________________________
547 void AliJetEmbeddingFromAODTask::Run()
549 if (!GetNextEntry()) {
550 if (fHistNotEmbedded)
551 fHistNotEmbedded->Fill(fCurrentFileID);
552 if (fHistEmbeddingQA)
553 fHistEmbeddingQA->Fill("Not embedded", 1);
554 AliError("Unable to get the AOD event to embed. Nothing will be embedded.");
558 if (fHistEmbeddingQA)
559 fHistEmbeddingQA->Fill("OK", 1);
561 fAODFilePath->SetString(fCurrentAODFile->GetName());
563 if (fOutMCParticles) {
565 if (fCopyArray && fMCParticles)
568 if (fAODMCParticles) {
569 AliDebug(3, Form("%d MC particles will be processed for embedding.", fAODMCParticles->GetEntriesFast()));
570 for (Int_t i = 0; i < fAODMCParticles->GetEntriesFast(); i++) {
571 AliAODMCParticle *part = static_cast<AliAODMCParticle*>(fAODMCParticles->At(i));
573 AliError(Form("Could not find MC particle %d in branch %s of tree %s!", i, fAODMCParticlesName.Data(), fAODTreeName.Data()));
577 AliDebug(3, Form("Processing MC particle %d with pT = %f, eta = %f, phi = %f", i, part->Pt(), part->Eta(), part->Phi()));
579 if (!part->IsPhysicalPrimary())
582 if (part->Pt() < fPtMin || part->Pt() > fPtMax ||
583 part->Eta() < fEtaMin || part->Eta() > fEtaMax ||
584 part->Phi() < fPhiMin || part->Phi() > fPhiMax)
587 AddMCParticle(part, i);
588 AliDebug(3, "Embedded!");
595 if (fCopyArray && fTracks)
598 AliDebug(3, Form("Start embedding with %d tracks.", fOutTracks->GetEntriesFast()));
601 AliDebug(3, Form("%d tracks will be processed for embedding.", fAODTracks->GetEntriesFast()));
602 for (Int_t i = 0; i < fAODTracks->GetEntriesFast(); i++) {
603 AliVTrack *track = static_cast<AliVTrack*>(fAODTracks->At(i));
605 AliError(Form("Could not find track %d in branch %s of tree %s!", i, fAODTrackName.Data(), fAODTreeName.Data()));
609 AliDebug(3, Form("Processing track %d with pT = %f, eta = %f, phi = %f, label = %d", i, track->Pt(), track->Eta(), track->Phi(), track->GetLabel()));
612 Bool_t isEmc = kFALSE;
614 AliAODTrack *aodtrack = static_cast<AliAODTrack*>(track);
615 if (aodtrack->TestFilterBit(fAODfilterBits[0])) {
618 else if (aodtrack->TestFilterBit(fAODfilterBits[1])) {
619 if ((aodtrack->GetStatus()&AliESDtrack::kITSrefit)==0) {
623 AliDebug(3, "Track not embedded because ITS refit failed.");
631 else { /*not a good track*/
632 AliDebug(3, "Track not embedded because not an hybrid track.");
635 if (fCutMaxFractionSharedTPCClusters > 0) {
636 Double_t frac = Double_t(aodtrack->GetTPCnclsS()) / Double_t(aodtrack->GetTPCncls());
637 if (frac > fCutMaxFractionSharedTPCClusters)
640 if (TMath::Abs(aodtrack->GetTrackEtaOnEMCal()) < 0.75 &&
641 aodtrack->GetTrackPhiOnEMCal() > 70 * TMath::DegToRad() &&
642 aodtrack->GetTrackPhiOnEMCal() < 190 * TMath::DegToRad())
645 else if (fPicoTrackVersion > 0) { /*not AOD mode, let's see if it is PicoTrack*/
646 AliPicoTrack *ptrack = dynamic_cast<AliPicoTrack*>(track);
648 if (fPicoTrackVersion >= 3)
649 type = ptrack->GetTrackType();
651 type = ptrack->GetLabel();
652 isEmc = ptrack->IsEMCAL();
654 if (!fIncludeNoITS && type==2) {
655 AliDebug(3, "Track not embedded because ITS refit failed.");
661 if (track->Pt() < fPtMin || track->Pt() > fPtMax ||
662 track->Eta() < fEtaMin || track->Eta() > fEtaMax ||
663 track->Phi() < fPhiMin || track->Phi() > fPhiMax) {
664 AliDebug(3, "Track not embedded because out of limits.");
668 if (fTrackEfficiency < 1) {
669 Double_t r = gRandom->Rndm();
670 if (fTrackEfficiency < r) {
671 AliDebug(3, "Track not embedded because of artificial inefiiciency.");
678 if (fUseNegativeLabels)
679 label = track->GetLabel();
681 label = TMath::Abs(track->GetLabel());
684 AliDebug(1,Form("%s: Track %d with label==0", GetName(), i));
687 AddTrack(track->Pt(), track->Eta(), track->Phi(), type, track->GetTrackEtaOnEMCal(), track->GetTrackPhiOnEMCal(), track->GetTrackPtOnEMCal(), isEmc, label, track->Charge());
688 AliDebug(3, "Track embedded!");
695 if (fCopyArray && fClusters)
699 for (Int_t i = 0; i < fAODClusters->GetEntriesFast(); i++) {
700 AliVCluster *clus = static_cast<AliVCluster*>(fAODClusters->At(i));
702 AliError(Form("Could not find cluster %d in branch %s of tree %s!", i, fAODClusName.Data(), fAODTreeName.Data()));
706 if (!clus->IsEMCAL())
710 Double_t vert[3] = {0,0,0};
711 clus->GetMomentum(vect,vert);
713 if (vect.Pt() < fPtMin || vect.Pt() > fPtMax ||
714 vect.Eta() < fEtaMin || vect.Eta() > fEtaMax ||
715 vect.Phi() < fPhiMin || vect.Phi() > fPhiMax)
720 label = clus->GetLabel();
722 AliDebug(1,Form("%s: Clus %d with label<=0", GetName(), i));
731 Double_t totalEnergy = 0;
732 Int_t totalCells = 0;
735 totalCells += fCaloCells->GetNumberOfCells();
737 totalCells += fAODCaloCells->GetNumberOfCells();
739 SetNumberOfOutCells(totalCells);
745 for (Short_t i = 0; i < fAODCaloCells->GetNumberOfCells(); i++) {
749 Short_t cellNum = -1;
752 fAODCaloCells->GetCell(i, cellNum, amp, time, mclabel, efrac);
756 AliDebug(1,Form("%s: Cell %d with label<=0", GetName(), i));
762 AliDebug(2,Form("Adding cell with amplitude %f, absolute ID %d, time %f, mc label %d", amp, cellNum, time, mclabel));
763 AddCell(amp, cellNum, time, mclabel);
767 AliDebug(2,Form("Added cells = %d (energy = %f), total cells = %d", fAddedCells, totalEnergy, totalCells));
771 //________________________________________________________________________
772 TLorentzVector AliJetEmbeddingFromAODTask::GetLeadingJet(TClonesArray *tracks, TClonesArray *clusters)
775 fastjet::JetAlgorithm jalgo(fastjet::kt_algorithm);
778 jalgo = fastjet::antikt_algorithm;
782 AliFJWrapper fjw(name, name);
783 fjw.SetAreaType(fastjet::active_area_explicit_ghosts);
784 fjw.SetGhostArea(1); // set a very large ghost area to speed up jet finding
785 fjw.SetR(fJetRadius);
786 fjw.SetAlgorithm(jalgo);
791 const Int_t Ntracks = tracks->GetEntries();
792 for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
793 AliVParticle *t = static_cast<AliVParticle*>(tracks->At(iTracks));
797 AliAODMCParticle *aodmcpart = dynamic_cast<AliAODMCParticle*>(t);
798 if (aodmcpart && !aodmcpart->IsPhysicalPrimary())
801 if ((fJetType == 1 && t->Charge() == 0) ||
802 (fJetType == 2 && t->Charge() != 0))
805 if (t->Pt() < fJetConstituentMinPt)
808 fjw.AddInputVector(t->Px(), t->Py(), t->Pz(), t->P(), iTracks + 100);
812 if (clusters && fJetType != 1) {
813 Double_t vert[3]={0};
815 ((AliVVertex*)fAODVertex->At(0))->GetXYZ(vert);
817 const Int_t Nclus = clusters->GetEntries();
818 for (Int_t iClus = 0; iClus < Nclus; ++iClus) {
819 AliVCluster *c = static_cast<AliVCluster*>(clusters->At(iClus));
827 c->GetMomentum(nP, vert);
829 if (nP.Pt() < fJetConstituentMinPt)
832 fjw.AddInputVector(nP.Px(), nP.Py(), nP.Pz(), nP.P(), -iClus - 100);
839 std::vector<fastjet::PseudoJet> jets_incl = fjw.GetInclusiveJets();
840 AliDebug(1,Form("%d jets found", (Int_t)jets_incl.size()));
844 Int_t njets = jets_incl.size();
847 //std::vector<fastjet::PseudoJet> jets_incl_sorted = fastjet::sorted_by_pt(jets_incl);
848 for (Int_t i = 0; i < njets; i++) {
849 if (jet.Pt() >= jets_incl[i].perp())
851 if (jets_incl[i].eta() < fJetMinEta || jets_incl[i].eta() > fJetMaxEta || jets_incl[i].phi() < fJetMinPhi || jets_incl[i].phi() > fJetMaxPhi)
853 jet.SetPxPyPzE(jets_incl[i].px(), jets_incl[i].py(), jets_incl[i].pz(), jets_incl[i].E());