enable tagging of jets with high qualitiy leading track
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Mar 2012 10:45:13 +0000 (10:45 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Mar 2012 10:45:13 +0000 (10:45 +0000)
JETAN/AliAnalysisTaskJetCluster.cxx
JETAN/AliAnalysisTaskJetCluster.h
JETAN/DEV/AliAnalysisTaskJetCluster.cxx
JETAN/DEV/AliAnalysisTaskJetCluster.h
PWGJE/AliAnalysisTaskJetSpectrum2.cxx
PWGJE/AliAnalysisTaskJetSpectrum2.h
STEER/AOD/AliAODJet.h

index 28e721e..63941ed 100644 (file)
@@ -103,6 +103,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster():
   fUseBackgroundCalc(kFALSE),
   fEventSelection(kFALSE),     
   fFilterMask(0),
+  fFilterMaskBestPt(0),
   fFilterType(0),
   fJetTypes(kJet),
   fTrackTypeRec(kTrackUndef),
@@ -233,8 +234,8 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name):
   fUseAODTrackInput(kFALSE),
   fUseAODMCInput(kFALSE),
   fUseBackgroundCalc(kFALSE),
-  fEventSelection(kFALSE),                                                     
-  fFilterMask(0),
+  fEventSelection(kFALSE),                                                       fFilterMask(0),
+  fFilterMaskBestPt(0),
   fFilterType(0),
   fJetTypes(kJet),
   fTrackTypeRec(kTrackUndef),
@@ -1119,17 +1120,33 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
       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();
@@ -1560,6 +1577,7 @@ Int_t  AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){
        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;
index a0077ca..f9174a7 100644 (file)
@@ -141,6 +141,8 @@ class AliAnalysisTaskJetCluster : public AliAnalysisTaskSE
     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 
index 28e721e..63941ed 100644 (file)
@@ -103,6 +103,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster():
   fUseBackgroundCalc(kFALSE),
   fEventSelection(kFALSE),     
   fFilterMask(0),
+  fFilterMaskBestPt(0),
   fFilterType(0),
   fJetTypes(kJet),
   fTrackTypeRec(kTrackUndef),
@@ -233,8 +234,8 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name):
   fUseAODTrackInput(kFALSE),
   fUseAODMCInput(kFALSE),
   fUseBackgroundCalc(kFALSE),
-  fEventSelection(kFALSE),                                                     
-  fFilterMask(0),
+  fEventSelection(kFALSE),                                                       fFilterMask(0),
+  fFilterMaskBestPt(0),
   fFilterType(0),
   fJetTypes(kJet),
   fTrackTypeRec(kTrackUndef),
@@ -1119,17 +1120,33 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
       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();
@@ -1560,6 +1577,7 @@ Int_t  AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){
        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;
index a0077ca..f9174a7 100644 (file)
@@ -141,6 +141,8 @@ class AliAnalysisTaskJetCluster : public AliAnalysisTaskSE
     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 
index c8dffa5..00d742f 100644 (file)
@@ -94,6 +94,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2():
   fNMatchJets(5),
   fNRPBins(3),
   fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
+  fJetTriggerBestMask(AliAODJet::kHighTrackPtBest),
   fFilterMask(0),
   fEventSelectionMask(0),
   fNTrigger(0),
@@ -189,6 +190,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name):
   fNMatchJets(5),
   fNRPBins(3),
   fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
+  fJetTriggerBestMask(AliAODJet::kHighTrackPtBest),
   fFilterMask(0),
   fEventSelectionMask(0),
   fNTrigger(0),
@@ -457,6 +459,9 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects()
 
     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]);
@@ -912,6 +917,9 @@ void AliAnalysisTaskJetSpectrum2::FillJetHistos(TList &jetsList,TList &particles
     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;
index 9c0f8bb..83bb2cb 100644 (file)
@@ -74,7 +74,8 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     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;}
@@ -157,7 +158,8 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     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
@@ -207,6 +209,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     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
     
@@ -231,7 +234,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     TList *fHistList;                  //! Output list
    
 
-    ClassDef(AliAnalysisTaskJetSpectrum2, 18); // Analysis task for standard jet analysis
+    ClassDef(AliAnalysisTaskJetSpectrum2, 19); // Analysis task for standard jet analysis
 };
  
 #endif
index f91eca9..045ae5e 100644 (file)
@@ -104,9 +104,13 @@ class AliAODJet : public AliVParticle {
 
     // 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:
@@ -120,7 +124,7 @@ class AliAODJet : public AliVParticle {
     TLorentzVector* fVectorAreaCharged;      // jet area four momentum 
     TRefArray*      fRefTracks;              // array of references to the tracks belonging to the jet
 
-    ClassDef(AliAODJet,11);
+    ClassDef(AliAODJet,12);
 
 };