fUseBackgroundCalc(kFALSE),
fEventSelection(kFALSE),
fFilterMask(0),
+ fFilterMaskBestPt(0),
fFilterType(0),
fJetTypes(kJet),
fTrackTypeRec(kTrackUndef),
fUseAODTrackInput(kFALSE),
fUseAODMCInput(kFALSE),
fUseBackgroundCalc(kFALSE),
- fEventSelection(kFALSE),
- fFilterMask(0),
+ fEventSelection(kFALSE), fFilterMask(0),
+ fFilterMaskBestPt(0),
fFilterType(0),
fJetTypes(kJet),
fTrackTypeRec(kTrackUndef),
fh2NConstPt->Fill(tmpPt,constituents.size());
// loop over constiutents and fill spectrum
+ AliVParticle *partLead = 0;
+ Float_t ptLead = -1;
+
for(unsigned int ic = 0; ic < constituents.size();ic++){
AliVParticle *part = (AliVParticle*)recParticles.At(constituents[ic].user_index());
if(!part) continue;
-
fh1PtJetConstRec->Fill(part->Pt());
if(aodOutJet){
if((!fUseTrMomentumSmearing) && (!fUseDiceEfficiency)) aodOutJet->AddTrack(fRef->At(constituents[ic].user_index()));
- if(part->Pt()>fMaxTrackPtInJet)aodOutJet->SetTrigger(AliAODJet::kHighTrackPtTriggered);
+ if(part->Pt()>fMaxTrackPtInJet){
+ aodOutJet->SetTrigger(AliAODJet::kHighTrackPtTriggered);
+ }
+ }
+ if(part->Pt()>ptLead){
+ partLead = part;
}
if(j==0)fh1PtJetConstLeadingRec->Fill(part->Pt());
}
+
+ AliAODTrack *aodT = 0;
+ if(partLead){
+ if(aodT = dynamic_cast<AliAODTrack*>(partLead)){
+ if(aodT->TestFilterBit(fFilterMaskBestPt)){
+ aodOutJet->SetTrigger(AliAODJet::kHighTrackPtBest);
+ }
+ }
+ }
// correlation
Float_t tmpPhi = tmpRec.Phi();
if(fDebug>2)Printf("%s:%d No AOD",(char*)__FILE__,__LINE__);
return iCount;
}
+
for(int it = 0;it < aod->GetNumberOfTracks();++it){
AliAODTrack *tr = aod->GetTrack(it);
Bool_t bGood = false;
Bool_t fUseBackgroundCalc; // switches on background calculations
Bool_t fEventSelection; // use the event selection of this task, otherwise analyse all
UInt_t fFilterMask; // filter bit for slecected tracks
+ UInt_t fFilterMaskBestPt; // filter bit to mark jets with high quality leading tracks
+
UInt_t fFilterType; // filter type 0 = all, 1 = ITSTPC, 2 = TPC
UInt_t fJetTypes; // 1<<0 regular jets, 1<<1 << randomized event 1<<2 random cones 1<<3 random cones randomiuzed event
Int_t fTrackTypeRec; // type of tracks used for FF
fUseBackgroundCalc(kFALSE),
fEventSelection(kFALSE),
fFilterMask(0),
+ fFilterMaskBestPt(0),
fFilterType(0),
fJetTypes(kJet),
fTrackTypeRec(kTrackUndef),
fUseAODTrackInput(kFALSE),
fUseAODMCInput(kFALSE),
fUseBackgroundCalc(kFALSE),
- fEventSelection(kFALSE),
- fFilterMask(0),
+ fEventSelection(kFALSE), fFilterMask(0),
+ fFilterMaskBestPt(0),
fFilterType(0),
fJetTypes(kJet),
fTrackTypeRec(kTrackUndef),
fh2NConstPt->Fill(tmpPt,constituents.size());
// loop over constiutents and fill spectrum
+ AliVParticle *partLead = 0;
+ Float_t ptLead = -1;
+
for(unsigned int ic = 0; ic < constituents.size();ic++){
AliVParticle *part = (AliVParticle*)recParticles.At(constituents[ic].user_index());
if(!part) continue;
-
fh1PtJetConstRec->Fill(part->Pt());
if(aodOutJet){
if((!fUseTrMomentumSmearing) && (!fUseDiceEfficiency)) aodOutJet->AddTrack(fRef->At(constituents[ic].user_index()));
- if(part->Pt()>fMaxTrackPtInJet)aodOutJet->SetTrigger(AliAODJet::kHighTrackPtTriggered);
+ if(part->Pt()>fMaxTrackPtInJet){
+ aodOutJet->SetTrigger(AliAODJet::kHighTrackPtTriggered);
+ }
+ }
+ if(part->Pt()>ptLead){
+ partLead = part;
}
if(j==0)fh1PtJetConstLeadingRec->Fill(part->Pt());
}
+
+ AliAODTrack *aodT = 0;
+ if(partLead){
+ if(aodT = dynamic_cast<AliAODTrack*>(partLead)){
+ if(aodT->TestFilterBit(fFilterMaskBestPt)){
+ aodOutJet->SetTrigger(AliAODJet::kHighTrackPtBest);
+ }
+ }
+ }
// correlation
Float_t tmpPhi = tmpRec.Phi();
if(fDebug>2)Printf("%s:%d No AOD",(char*)__FILE__,__LINE__);
return iCount;
}
+
for(int it = 0;it < aod->GetNumberOfTracks();++it){
AliAODTrack *tr = aod->GetTrack(it);
Bool_t bGood = false;
Bool_t fUseBackgroundCalc; // switches on background calculations
Bool_t fEventSelection; // use the event selection of this task, otherwise analyse all
UInt_t fFilterMask; // filter bit for slecected tracks
+ UInt_t fFilterMaskBestPt; // filter bit to mark jets with high quality leading tracks
+
UInt_t fFilterType; // filter type 0 = all, 1 = ITSTPC, 2 = TPC
UInt_t fJetTypes; // 1<<0 regular jets, 1<<1 << randomized event 1<<2 random cones 1<<3 random cones randomiuzed event
Int_t fTrackTypeRec; // type of tracks used for FF
fNMatchJets(5),
fNRPBins(3),
fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
+ fJetTriggerBestMask(AliAODJet::kHighTrackPtBest),
fFilterMask(0),
fEventSelectionMask(0),
fNTrigger(0),
fNMatchJets(5),
fNRPBins(3),
fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
+ fJetTriggerBestMask(AliAODJet::kHighTrackPtBest),
fFilterMask(0),
fEventSelectionMask(0),
fNTrigger(0),
fh1PtJetsInRej[ij] = new TH1F(Form("fh1PtJets%sInRej",cAdd.Data()),Form("%s jets p_T;p_{T} (GeV/c)",cAdd.Data()),nBinPt,binLimitsPt);
fHistList->Add(fh1PtJetsInRej[ij]);
+
+ fh1PtJetsInBest[ij] = new TH1F(Form("fh1PtJets%sInBest",cAdd.Data()),Form("%s jets p_T;p_{T} (GeV/c)",cAdd.Data()),nBinPt,binLimitsPt);
+ fHistList->Add(fh1PtJetsInBest[ij]);
fh1PtTracksIn[ij] = new TH1F(Form("fh1PtTracks%sIn",cAdd.Data()),Form("%s track p_T;p_{T} (GeV/c)",cAdd.Data()),nBinPt,binLimitsPt);
fHistList->Add(fh1PtTracksIn[ij]);
AliAODJet *jet = (AliAODJet*)jetsList.At(ij);
Float_t ptJet = jet->Pt();
if(ptJet<0.150)ptJet = jet->GetPtSubtracted(0);
+ if(jet->Trigger()&fJetTriggerBestMask){
+ fh1PtJetsInBest[iType]->Fill(ptJet);
+ }
if(jet->Trigger()&fJetTriggerExcludeMask){
fh1PtJetsInRej[iType]->Fill(ptJet);
continue;
virtual void SetTrackTypeGen(Int_t i){fTrackTypeGen = i;}
virtual void SetTrackTypeRec(Int_t i){fTrackTypeRec = i;}
virtual void SetFilterMask(UInt_t i){fFilterMask = i;}
- virtual void SetJetTriggerExclude(UChar_t i){fJetTriggerExcludeMask = i;}
+ virtual void SetJetTriggerExclude(UInt_t i){fJetTriggerExcludeMask = i;}
+ virtual void SetJetTriggerBest(UInt_t i){fJetTriggerBestMask = i;}
virtual void SetMatching(Bool_t b = kTRUE){fDoMatching = b;}
virtual void SetRPMethod(Int_t i){fRPMethod = i;}
virtual void SetEventSelectionMask(UInt_t i){fEventSelectionMask = i;}
Bool_t fDoMatching; // switch on the matching between rec and gen
Short_t fNMatchJets; // number of leading jets considered from the list
Short_t fNRPBins; // number of bins with respect to RP
- UChar_t fJetTriggerExcludeMask; // mask for jet triggers to exclude
+ UInt_t fJetTriggerExcludeMask; // mask for jet triggers to exclude
+ UInt_t fJetTriggerBestMask; // mask for best jet triggers
UInt_t fFilterMask; // filter bit for slecected tracks
UInt_t fEventSelectionMask; // Selection information used to filter events
Int_t fNTrigger; // number of triggers for selection
TH1F* fh1PtIn[kJetTypes][kMaxJets+1]; //! Jet pt
TH1F* fh1PtJetsIn[kJetTypes]; //! Jet pt for all jets
TH1F* fh1PtJetsInRej[kJetTypes]; //! Jet pt for all rejected jets
+ TH1F* fh1PtJetsInBest[kJetTypes]; //! Jet pt for all rejected jets
TH1F* fh1PtTracksIn[kJetTypes]; //! track pt for all tracks
TH1F* fh1PtTracksInLow[kJetTypes]; //! track pt for all tracks
TList *fHistList; //! Output list
- ClassDef(AliAnalysisTaskJetSpectrum2, 18); // Analysis task for standard jet analysis
+ ClassDef(AliAnalysisTaskJetSpectrum2, 19); // Analysis task for standard jet analysis
};
#endif
// first only one bit for EMCAL and TRD, leave space for more
// trigger types and/or other detectors
+ // use some of the bits to flag jets with high pT track
+ // and good high pT cut
enum {kEMCALTriggered = 1<<0,
kTRDTriggered = 1<<2,
- kHighTrackPtTriggered = 1<<7};
+ kHighTrackPtTriggered = 1<<7,
+ kHighTrackPtBest = 1<<8
+ };
private:
TLorentzVector* fVectorAreaCharged; // jet area four momentum
TRefArray* fRefTracks; // array of references to the tracks belonging to the jet
- ClassDef(AliAODJet,11);
+ ClassDef(AliAODJet,12);
};