prepare jet response for p+p, fix matching bug (B. Bathen)
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Jul 2011 13:44:23 +0000 (13:44 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Jul 2011 13:44:23 +0000 (13:44 +0000)
PWG4/JetTasks/AliAnalysisHelperJetTasks.cxx
PWG4/JetTasks/AliAnalysisHelperJetTasks.h
PWG4/JetTasks/AliAnalysisTaskJetResponseV2.cxx
PWG4/JetTasks/AliAnalysisTaskJetResponseV2.h

index b96dbae..02692c2 100644 (file)
@@ -380,7 +380,7 @@ void AliAnalysisHelperJetTasks::GetClosestJets(const TList *genJetsList,const In
 void AliAnalysisHelperJetTasks::GetJetMatching(const TList *genJetsList, const Int_t &kGenJets,
                                                const TList *recJetsList, const Int_t &kRecJets,
                                                TArrayI &iMatchIndex, TArrayF &fPtFraction,
-                                               Int_t iDebug, Float_t maxDist){
+                                               Int_t iDebug, Float_t maxDist, Int_t mode){
 
                                             
     // Matching jets from two lists
@@ -398,14 +398,7 @@ void AliAnalysisHelperJetTasks::GetJetMatching(const TList *genJetsList, const I
     // N closest jets: store list with index and \Delta R
     const Int_t kClosestJetsN = 4; 
     Double_t closestJets[kClosestJetsN][2]; //[][0] = index, [][1] = \Delta R
-    
-    for(Int_t i=0; i<kClosestJetsN; ++i){
-        for(Int_t j=0; j<2; ++j){
-            closestJets[i][j] = 1e6;
-        }
-    }
-
-    
+        
     const Int_t nGenJets = TMath::Min(genJetsList->GetEntries(),kGenJets);
     const Int_t nRecJets = TMath::Min(recJetsList->GetEntries(),kRecJets);
     if(nRecJets==0||nGenJets==0) return;
@@ -415,6 +408,12 @@ void AliAnalysisHelperJetTasks::GetJetMatching(const TList *genJetsList, const I
     
     // loop over generated/embedded jets
     for(Int_t ig=0; ig<nGenJets; ++ig){
+
+        for(Int_t i=0; i<kClosestJetsN; ++i){
+            closestJets[i][0] = -1;   // index
+            closestJets[i][1] = 1e6;  // delta R
+        }
+
         genJet = (AliAODJet*)genJetsList->At(ig);
         //if(!genJet || !JetSelected(genJet)) continue;
         if(!genJet) continue;
@@ -447,17 +446,18 @@ void AliAnalysisHelperJetTasks::GetJetMatching(const TList *genJetsList, const I
         } // end: loop over reconstructed jets
         
         // calculate fraction for the N closest jets
-        Double_t maxFraction = 0.; // maximum found fraction in one jets
+        Double_t maxFraction = -1.; // maximum found fraction in one jets
         Double_t cumFraction = 0.; // cummulated fraction of closest jets (for break condition)
         Double_t fraction = 0.;
         Int_t ir = -1;  // index of close reconstruced jet
         
         for(Int_t irc=0; irc<kClosestJetsN; irc++){
             ir = (Int_t)(closestJets[irc][0]);
+                       if(ir<0 || ir>nRecJets-1) continue;
             recJet = (AliAODJet*)recJetsList->At(ir);
             if(!(recJet)) continue;
             
-            fraction = GetFractionOfJet(recJet,genJet);
+            fraction = GetFractionOfJet(recJet,genJet,mode);
             
             cumFraction += fraction;
             
@@ -483,7 +483,7 @@ void AliAnalysisHelperJetTasks::GetJetMatching(const TList *genJetsList, const I
     }
 }
 
-Double_t AliAnalysisHelperJetTasks::GetFractionOfJet(const AliAODJet *recJet, const AliAODJet *genJet){
+Double_t AliAnalysisHelperJetTasks::GetFractionOfJet(const AliAODJet *recJet, const AliAODJet *genJet, Int_t mode){
   //
   // get the fraction of hte signal jet in the full jt
   //
@@ -509,10 +509,19 @@ Double_t AliAnalysisHelperJetTasks::GetFractionOfJet(const AliAODJet *recJet, co
             if(!genTrack) continue;
             
             // look if it points to the same track
-            if(genTrack==recTrack){
+            if( (mode&1)!=0 && genTrack==recTrack){
                 ptAssocTracks += genTrack->Pt();
                 break;
             }
+            if( (mode&2)!=0 
+                    && genTrack->GetLabel()>-1
+                    && recTrack->GetLabel()>-1
+                    && genTrack->GetLabel()==recTrack->GetLabel()){
+
+                ptAssocTracks += genTrack->Pt();
+                break; 
+            }
         }
     }
     
index bb45a92..c90f51c 100644 (file)
@@ -66,9 +66,9 @@ class AliAnalysisHelperJetTasks : public TObject {
   static void GetJetMatching(const TList *genJetsList, const Int_t &kGenJets,
                              const TList *recJetsList, const Int_t &kRecJets,
                              TArrayI &iMatchIndex, TArrayF &fPtFraction,
-                             Int_t iDebug = 0, Float_t maxDist = 0.3);
+                             Int_t iDebug = 0, Float_t maxDist = 0.3, Int_t mode=1);
                                                         
-  static Double_t GetFractionOfJet(const AliAODJet *recJet,const AliAODJet *genJet);
+  static Double_t GetFractionOfJet(const AliAODJet *recJet,const AliAODJet *genJet,Int_t mode=1);
 
 
   static void MergeOutputDirs(const char* cFiles,const char* cPattern,const char *cOutFile,Bool_t bUpdate = false); // merges all directories containing the pattern
@@ -101,7 +101,7 @@ class AliAnalysisHelperJetTasks : public TObject {
   
   static Int_t fgLastProcessType;    // stores the raw value of the last process type extracted
  
-  ClassDef(AliAnalysisHelperJetTasks, 6) 
+  ClassDef(AliAnalysisHelperJetTasks, 7) 
 };
 
 #endif // ALIANALYSISHELPERJETTASKS_H
index 9b7f626..ff8c9e9 100644 (file)
@@ -30,17 +30,17 @@ AliAnalysisTaskJetResponseV2::AliAnalysisTaskJetResponseV2() :
   AliAnalysisTaskSE(),
   fESD(0x0),
   fAOD(0x0),
+  fIsPbPb(kTRUE),
   fOfflineTrgMask(AliVEvent::kAny),
   fMinContribVtx(1),
   fVtxZMin(-8.),
   fVtxZMax(8.),
-  fEvtClassMin(1),
+  fEvtClassMin(0),
   fEvtClassMax(4),
   fCentMin(0.),
   fCentMax(100.),
   fNInputTracksMin(0),
   fNInputTracksMax(-1),
-  fReactionPlaneBin(-1),
   fJetEtaMin(-.5),
   fJetEtaMax(.5),
   fJetPtMin(20.),
@@ -72,17 +72,17 @@ AliAnalysisTaskJetResponseV2::AliAnalysisTaskJetResponseV2(const char *name) :
   AliAnalysisTaskSE(name),
   fESD(0x0),
   fAOD(0x0),
+  fIsPbPb(kTRUE),
   fOfflineTrgMask(AliVEvent::kAny),
   fMinContribVtx(1),
   fVtxZMin(-8.),
   fVtxZMax(8.),
-  fEvtClassMin(1),
+  fEvtClassMin(0),
   fEvtClassMax(4),
   fCentMin(0.),
   fCentMax(100.),
   fNInputTracksMin(0),
   fNInputTracksMax(-1),
-  fReactionPlaneBin(-1),
   fJetEtaMin(-.5),
   fJetEtaMax(.5),
   fJetPtMin(20.),
@@ -271,9 +271,10 @@ void AliAnalysisTaskJetResponseV2::UserExec(Option_t *)
   fESD=dynamic_cast<AliESDEvent*>(InputEvent());
   if (!fESD) {
     AliError("ESD not available");
-    return;
+    fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
+  } else {
+    fAOD = dynamic_cast<AliAODEvent*>(AODEvent());
   }
-  fAOD = dynamic_cast<AliAODEvent*>(AODEvent());
   if (!fAOD) {
     AliError("AOD not available");
     return;
@@ -314,8 +315,10 @@ void AliAnalysisTaskJetResponseV2::UserExec(Option_t *)
   }
 
   // centrality selection
-  AliCentrality *cent = fESD->GetCentrality();
-  Float_t centValue = cent->GetCentralityPercentile("V0M");
+  AliCentrality *cent = 0x0;
+  Float_t centValue = 0.; 
+  if(fESD) cent = fESD->GetCentrality();
+  if(cent) centValue = cent->GetCentralityPercentile("V0M");
   if(fDebug) printf("centrality: %f\n", centValue);
   if (centValue < fCentMin || centValue > fCentMax){
     fHistEvtSelection->Fill(4);
@@ -368,7 +371,7 @@ void AliAnalysisTaskJetResponseV2::UserExec(Option_t *)
   // stores matched jets in 'aMatchIndex' and fraction of pT in 'aPtFraction'
   AliAnalysisHelperJetTasks::GetJetMatching(fListJets[0], TMath::Min((Int_t)fNMatchJets,(Int_t)fListJets[0]->GetEntries()),
                                             fListJets[1], TMath::Min((Int_t)fNMatchJets,(Int_t)fListJets[1]->GetEntries()),
-                                            aMatchIndex, aPtFraction, fDebug, fMatchMaxDist);
+                                            aMatchIndex, aPtFraction, fDebug, fMatchMaxDist, fIsPbPb?1:2);
                                                                                        
   // loop over matched jets
   Int_t ir = -1; // index of matched reconstruced jet
@@ -404,11 +407,11 @@ void AliAnalysisTaskJetResponseV2::UserExec(Option_t *)
         
         // get parameters
         for(Int_t i=0; i<fkNbranches; ++i){
-           jetEta[i]  = jet[i]->Eta();
-               jetPhi[i]  = jet[i]->Phi();
-               jetPt[i]   = jet[i]->Pt();
-               jetArea[i] = jet[i]->EffectiveAreaCharged();
-               rpJet[i]   = TVector2::Phi_mpi_pi(rp-jetPhi[i]);
+      jetEta[i]  = jet[i]->Eta();
+      jetPhi[i]  = jet[i]->Phi();
+      jetPt[i]   = jet[i]->Pt();
+      jetArea[i] = jet[i]->EffectiveAreaCharged();
+      rpJet[i]   = TVector2::Phi_mpi_pi(rp-jetPhi[i]);
         }
         Int_t rpBin = AliAnalysisHelperJetTasks::GetPhiBin(TVector2::Phi_mpi_pi(rp-jetPhi[1]), 3);
 
index 16351e0..3cdfab7 100644 (file)
@@ -26,6 +26,7 @@ class AliAnalysisTaskJetResponseV2 : public AliAnalysisTaskSE {
 
   virtual AliVEvent::EOfflineTriggerTypes GetOfflineTrgMask() const { return fOfflineTrgMask; }
   virtual void     GetBranchNames(TString &branch1, TString &branch2) const { branch1 = fJetBranchName[0]; branch2 = fJetBranchName[1]; }
+  virtual Bool_t   GetIsPbPb() const { return fIsPbPb; }
   virtual Int_t    GetMinContribVtx() const { return fMinContribVtx; };
   virtual Float_t  GetVtxZMin() const { return fVtxZMin; }
   virtual Float_t  GetVtxZMax() const { return fVtxZMax; }
@@ -35,7 +36,6 @@ class AliAnalysisTaskJetResponseV2 : public AliAnalysisTaskSE {
   virtual Float_t  GetCentMax() const { return fCentMax; }
   virtual Int_t    GetNInputTracksMin() const { return fNInputTracksMin; }
   virtual Int_t    GetNInputTracksMax() const { return fNInputTracksMax; } 
-  virtual Float_t  GetReactionPlaneBin() const { return fReactionPlaneBin; }
   virtual Float_t  GetJetEtaMin() const { return fJetEtaMin; }
   virtual Float_t  GetJetEtaMax() const { return fJetEtaMax; }
   virtual Float_t  GetJetPtMin() const { return fJetPtMin; }
@@ -43,6 +43,7 @@ class AliAnalysisTaskJetResponseV2 : public AliAnalysisTaskSE {
   virtual Int_t    GetNMatchJets() const { return fNMatchJets; }
 
   virtual void     SetBranchNames(const TString &branch1, const TString &branch2);
+  virtual void     SetIsPbPb(Bool_t b=kTRUE) { fIsPbPb = b; }
   virtual void     SetOfflineTrgMask(AliVEvent::EOfflineTriggerTypes mask) { fOfflineTrgMask = mask; }
   virtual void     SetMinContribVtx(Int_t n) { fMinContribVtx = n; }
   virtual void     SetVtxZMin(Float_t z) { fVtxZMin = z; }
@@ -53,23 +54,24 @@ class AliAnalysisTaskJetResponseV2 : public AliAnalysisTaskSE {
   virtual void     SetCentMax(Float_t cent) { fCentMax = cent; }
   virtual void     SetNInputTracksMin(Int_t nTr) { fNInputTracksMin = nTr; }
   virtual void     SetNInputTracksMax(Int_t nTr) { fNInputTracksMax = nTr; }
-  virtual void     SetReactionPlaneBin(Int_t rpBin) { fReactionPlaneBin = rpBin; }
   virtual void     SetJetEtaMin(Float_t eta) { fJetEtaMin = eta; }
   virtual void     SetJetEtaMax(Float_t eta) { fJetEtaMax = eta; }
   virtual void     SetJetPtMin(Float_t pt) { fJetPtMin = pt; }
-  virtual void     SetJetPtFractionMin(Float_t pt) { fJetPtFractionMin = pt; }
+  virtual void     SetJetPtFractionMin(Float_t frac) { fJetPtFractionMin = frac; }
   virtual void     SetNMatchJets(Int_t n) { fNMatchJets = n; }
 
  private:
   // ESD/AOD events
   AliESDEvent *fESD;    //! ESD object
   AliAODEvent *fAOD;    //! AOD event
-
+  
+  
   // jets to compare
   TString fJetBranchName[2]; //  name of jet branches to compare
   TList *fListJets[2];       //! jet lists
-
+  
   // event selection
+  Bool_t fIsPbPb;      // is Pb-Pb (fast embedding) or p-p (detector response)
   AliVEvent::EOfflineTriggerTypes fOfflineTrgMask; // mask of offline triggers to accept
   Int_t   fMinContribVtx; // minimum number of track contributors for primary vertex
   Float_t fVtxZMin;      // lower bound on vertex z
@@ -80,7 +82,6 @@ class AliAnalysisTaskJetResponseV2 : public AliAnalysisTaskSE {
   Float_t fCentMax;      // upper bound on centrality
   Int_t   fNInputTracksMin;  // lower bound of nb. of input tracks
   Int_t   fNInputTracksMax;  // upper bound of nb. of input tracks
-  Float_t fReactionPlaneBin; // reaction plane bin
   Float_t fJetEtaMin;     // lower bound on eta for found jets
   Float_t fJetEtaMax;     // upper bound on eta for found jets
   Float_t fJetPtMin;      // minimum jet pT
@@ -105,7 +106,7 @@ class AliAnalysisTaskJetResponseV2 : public AliAnalysisTaskSE {
   AliAnalysisTaskJetResponseV2(const AliAnalysisTaskJetResponseV2&); // not implemented
   AliAnalysisTaskJetResponseV2& operator=(const AliAnalysisTaskJetResponseV2&); // not implemented
 
-  ClassDef(AliAnalysisTaskJetResponseV2, 1);
+  ClassDef(AliAnalysisTaskJetResponseV2, 2);
 };
 
 #endif