update from salvatore
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Jun 2012 14:18:51 +0000 (14:18 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Jun 2012 14:18:51 +0000 (14:18 +0000)
PWGGA/EMCALJetTasks/AliAnalysisTaskSAJF.cxx
PWGGA/EMCALJetTasks/AliAnalysisTaskSAJF.h
PWGGA/EMCALJetTasks/AliJetModelBaseTask.cxx
PWGGA/EMCALJetTasks/AliJetModelBaseTask.h
PWGGA/EMCALJetTasks/AliJetRandomizerTask.cxx

index 4395723..609f67c 100644 (file)
@@ -44,11 +44,15 @@ AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() :
   fRandTracks(0),
   fRandCaloClusters(0),
   fRho(0),
+  fEmbeddedClusterId(-1),
+  fEmbeddedTrackId(-1),
   fHistCentrality(0),
+  fHistDeltaVectorPt(0),
   fHistRhoVSleadJetPt(0),
   fHistRCPhiEta(0),
   fHistRCPtExLJVSDPhiLJ(0),
   fHistRhoVSRCPt(0),
+  fHistEmbNotFoundPhiEta(0),
   fHistEmbJetPhiEta(0),
   fHistEmbPartPhiEta(0),
   fHistRhoVSEmbBkg(0)
@@ -108,11 +112,15 @@ AliAnalysisTaskSAJF::AliAnalysisTaskSAJF(const char *name) :
   fRandTracks(0),
   fRandCaloClusters(0),
   fRho(0),
+  fEmbeddedClusterId(-1),
+  fEmbeddedTrackId(-1),
   fHistCentrality(0),
+  fHistDeltaVectorPt(0),
   fHistRhoVSleadJetPt(0),
   fHistRCPhiEta(0),
   fHistRCPtExLJVSDPhiLJ(0),
   fHistRhoVSRCPt(0),
+  fHistEmbNotFoundPhiEta(0),
   fHistEmbJetPhiEta(0),
   fHistEmbPartPhiEta(0),
   fHistRhoVSEmbBkg(0)
@@ -177,6 +185,11 @@ void AliAnalysisTaskSAJF::UserCreateOutputObjects()
   fHistCentrality->GetYaxis()->SetTitle("counts");
   fOutput->Add(fHistCentrality);
 
+  fHistDeltaVectorPt = new TH1F("fHistDeltaVectorPt", "fHistDeltaVectorPt", fNbins, -50, 50);
+  fHistDeltaVectorPt->GetXaxis()->SetTitle("#deltap_{T} [GeV/c]");
+  fHistDeltaVectorPt->GetYaxis()->SetTitle("counts");
+  fOutput->Add(fHistDeltaVectorPt);
+
   fHistRhoVSleadJetPt = new TH2F("fHistRhoVSleadJetPt","fHistRhoVSleadJetPt", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
   fHistRhoVSleadJetPt->GetXaxis()->SetTitle("#rho * area [GeV/c]");
   fHistRhoVSleadJetPt->GetYaxis()->SetTitle("Leading jet p_{T} [GeV/c]");
@@ -198,6 +211,11 @@ void AliAnalysisTaskSAJF::UserCreateOutputObjects()
   fOutput->Add(fHistRhoVSRCPt);
 
   if (!fEmbJetsName.IsNull()) {
+    fHistEmbNotFoundPhiEta = new TH2F("fHistEmbNotFoundPhiEta","Phi-Eta distribution of not found embedded particles", 40, -2, 2, 64, 0, 6.4);
+    fHistEmbNotFoundPhiEta->GetXaxis()->SetTitle("#eta");
+    fHistEmbNotFoundPhiEta->GetYaxis()->SetTitle("#phi");
+    fOutput->Add(fHistEmbNotFoundPhiEta);
+
     fHistEmbJetPhiEta = new TH2F("fHistEmbJetPhiEta","Phi-Eta distribution of embedded jets", 40, -2, 2, 64, 0, 6.4);
     fHistEmbJetPhiEta->GetXaxis()->SetTitle("#eta");
     fHistEmbJetPhiEta->GetYaxis()->SetTitle("#phi");
@@ -671,36 +689,50 @@ Bool_t AliAnalysisTaskSAJF::FillHistograms()
   DoEmbJetLoop(embJet, embPart);
 
   if (embJet) {
-
-    fHistEmbJetsPt[fCentBin]->Fill(embJet->Pt());
-    fHistEmbJetsCorrPt[fCentBin]->Fill(embJet->Pt() - rho * embJet->Area());
-    fHistEmbPart[fCentBin]->Fill(embJet->MCPt());
-    fHistEmbJetPhiEta->Fill(embJet->Eta(), embJet->Phi());
-    fHistDeltaPtEmb[fCentBin]->Fill(embJet->Pt() - embJet->Area() * rho - embJet->MCPt());
-    fHistRhoVSEmbBkg->Fill(embJet->Area() * rho, embJet->Pt() - embJet->MCPt());
+    Double_t probePt = 0;
 
     AliVCluster *cluster = dynamic_cast<AliVCluster*>(embPart);
     if (cluster) {
-      Float_t pos[3];
-      cluster->GetPosition(pos);
-      TVector3 clusVec(pos);
+      TLorentzVector nPart;
+      cluster->GetMomentum(nPart, fVertex);
       
-      fHistEmbPartPhiEta->Fill(clusVec.Eta(), clusVec.Phi());
+      fHistEmbPartPhiEta->Fill(nPart.Eta(), nPart.Phi());
+      probePt = nPart.Pt();
     }
     else {
       AliVTrack *track = dynamic_cast<AliVTrack*>(embPart);
       if (track) {
        fHistEmbPartPhiEta->Fill(track->Eta(), track->Phi());
+       probePt = track->Pt();
       }
       else {
-       AliWarning(Form("%s - Embedded particle type not found or not recognized (neither AliVCluster nor AliVTrack)!", GetName()));
+         AliWarning(Form("%s - Embedded jet found but embedded particle not found (wrong type?)!", GetName()));
        return kTRUE;
       }
     }
 
+    fHistEmbJetsPt[fCentBin]->Fill(embJet->Pt());
+    fHistEmbJetsCorrPt[fCentBin]->Fill(embJet->Pt() - rho * embJet->Area());
+    fHistEmbPart[fCentBin]->Fill(probePt);
+    fHistEmbJetPhiEta->Fill(embJet->Eta(), embJet->Phi());
+    fHistDeltaPtEmb[fCentBin]->Fill(embJet->Pt() - embJet->Area() * rho - probePt);
+    fHistRhoVSEmbBkg->Fill(embJet->Area() * rho, embJet->Pt() - probePt);
+
   }
   else {
-    AliWarning(Form("%s - Embedded jet not found in the event!", GetName()));
+    if (fEmbeddedTrackId >= 0) {
+      AliVTrack *track2 = static_cast<AliVTrack*>(fTracks->At(fEmbeddedTrackId));
+      fHistEmbNotFoundPhiEta->Fill(track2->Eta(), track2->Phi());
+    }
+    else if (fEmbeddedClusterId >= 0) {
+      AliVCluster *cluster2 = static_cast<AliVCluster*>(fCaloClusters->At(fEmbeddedClusterId));
+      TLorentzVector nPart;
+      cluster2->GetMomentum(nPart, fVertex);
+      fHistEmbNotFoundPhiEta->Fill(nPart.Eta(), nPart.Phi());
+    }
+    else {
+      AliWarning(Form("%s - Embedded particle not found!", GetName()));
+    }
   }
 
   return kTRUE;
@@ -755,6 +787,8 @@ void AliAnalysisTaskSAJF::DoClusterLoop()
   if (!fCaloClusters)
     return;
 
+  fEmbeddedClusterId = -1;
+
   Int_t nclusters =  fCaloClusters->GetEntriesFast();
 
   for (Int_t iClusters = 0; iClusters < nclusters; iClusters++) {
@@ -767,6 +801,9 @@ void AliAnalysisTaskSAJF::DoClusterLoop()
     if (!AcceptCluster(cluster, kTRUE)) 
       continue;
 
+    if (cluster->Chi2() == 100)
+      fEmbeddedClusterId = iClusters;
+
     fHistClustersPt[fCentBin]->Fill(cluster->E());
   }
 }
@@ -779,6 +816,8 @@ void AliAnalysisTaskSAJF::DoTrackLoop()
   if (!fTracks)
     return;
 
+  fEmbeddedTrackId = -1;
+
   Int_t ntracks = fTracks->GetEntriesFast();
 
   for (Int_t i = 0; i < ntracks; i++) {
@@ -794,6 +833,9 @@ void AliAnalysisTaskSAJF::DoTrackLoop()
     
     if (vtrack && !AcceptTrack(vtrack, kTRUE)) 
       continue;
+
+    if (track->GetLabel() == 100)
+      fEmbeddedTrackId = i;
     
     fHistTracksPt[fCentBin]->Fill(track->Pt());
   }
@@ -845,11 +887,15 @@ void AliAnalysisTaskSAJF::DoJetLoop()
       fHistJetsNEFvsPt[fCentBin]->Fill(jet->NEF(), jet->Pt());
     }
 
+    Float_t scalarpt = 0;
+
     if (fTracks) {
       for (Int_t it = 0; it < jet->GetNumberOfTracks(); it++) {
        AliVParticle *track = jet->TrackAt(it, fTracks);
-       if (track)
+       if (track) {
          fHistJetsZvsPt[fCentBin]->Fill(track->Pt() / jet->Pt(), jet->Pt());
+         scalarpt += track->Pt();
+       }
       }
     }
 
@@ -861,9 +907,12 @@ void AliAnalysisTaskSAJF::DoJetLoop()
          TLorentzVector nPart;
          cluster->GetMomentum(nPart, fVertex);
          fHistJetsZvsPt[fCentBin]->Fill(nPart.Et() / jet->Pt(), jet->Pt());
+         scalarpt += nPart.Pt();
        }
       }
     }
+
+    fHistDeltaVectorPt->Fill(scalarpt - jet->Pt());
   } //jet loop 
 }
 
index dd43de7..c0eabc9 100644 (file)
@@ -55,6 +55,8 @@ class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcalJet {
   TClonesArray               *fRandTracks;                 //!Randomized tracks
   TClonesArray               *fRandCaloClusters;           //!Randomized clusters
   AliRhoParameter            *fRho;                        //!Event rho
+  Int_t                       fEmbeddedClusterId;          //!Embedded cluster id
+  Int_t                       fEmbeddedTrackId;            //!Embedded track id
 
   // General histograms
   TH1F                       *fHistCentrality;             //!Event centrality distribution
@@ -74,6 +76,7 @@ class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcalJet {
   TH2F                       *fHistMaxTrackPtvsJetCorrPt[4];   //!Max constituent track pt vs. jet pt
   TH2F                       *fHistMaxClusPtvsJetCorrPt[4];    //!Max constituent cluster pt vs. jet pt
   TH2F                       *fHistMaxPartPtvsJetCorrPt[4];    //!Max constituent particle (track or cluster) pt vs. jet pt
+  TH1F                       *fHistDeltaVectorPt;              //!Delta Pt between vector and scalar sum
 
   // Rho
   TH1F                       *fHistRho[4];                    //!Rho distribution
@@ -96,6 +99,7 @@ class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcalJet {
   TH1F                       *fHistDeltaPtRCRand[4];       //!deltaPt = Pt(RC) - A * rho, randomzied particles
 
   // Jet embedding
+  TH2F                       *fHistEmbNotFoundPhiEta;      //!Phi-Eta of "not found" embedded particles
   TH1F                       *fHistEmbJetsPt[4];           //!Pt distribution of embedded jets
   TH1F                       *fHistEmbJetsCorrPt[4];       //!Pt distribution of embedded jets
   TH1F                       *fHistEmbPart[4];             //!Pt distribution of embedded particle
index 1e62bcb..4cab20c 100644 (file)
@@ -42,6 +42,7 @@ AliJetModelBaseTask::AliJetModelBaseTask() :
   fCopyArray(kTRUE),
   fNClusters(0),
   fNTracks(0),
+  fMarkMC(kTRUE),
   fPtSpectrum(0),
   fIsInit(0),
   fGeom(0),
@@ -71,6 +72,7 @@ AliJetModelBaseTask::AliJetModelBaseTask(const char *name) :
   fCopyArray(kTRUE),
   fNClusters(0),
   fNTracks(1),
+  fMarkMC(kTRUE),
   fPtSpectrum(0),
   fIsInit(0),
   fGeom(0),
@@ -163,7 +165,8 @@ AliVCluster* AliJetModelBaseTask::AddCluster(Double_t e, Int_t absId)
   cluster->SetCellsAmplitudeFraction(&fract);
   cluster->SetID(nClusters);
   cluster->SetEmcCpvDistance(-1);
-  cluster->SetChi2(100); // MC flag!
+  if (fMarkMC)
+    cluster->SetChi2(100); // MC flag!
 
   return cluster;
 }
@@ -182,11 +185,13 @@ AliPicoTrack* AliJetModelBaseTask::AddTrack(Double_t pt, Double_t eta, Double_t
   if (phi < 0) 
     phi = GetRandomPhi();
 
+  Int_t label = fMarkMC ? 100 : 0;
+
   AliPicoTrack *track = new ((*fOutTracks)[nTracks]) AliPicoTrack(pt, 
                                                                  eta, 
                                                                  phi, 
                                                                  1, 
-                                                                 100,    // MC flag!      
+                                                                 label,    // MC flag!      
                                                                  0, 
                                                                  0, 
                                                                  kFALSE);
index ad5267f..f55377c 100644 (file)
@@ -20,16 +20,17 @@ class AliJetModelBaseTask : public AliAnalysisTaskSE {
   void                   UserExec(Option_t* /*option*/);
 
   void                   SetClusName(const char *n)            { fCaloName     = n;    }
-  void                   SetTracksName(const char *n)          { fTracksName   = n;    }
-  void                   SetEtaRange(Float_t min, Float_t max) { fEtaMin       = min;  fEtaMax = max; }
-  void                   SetPhiRange(Float_t min, Float_t max) { fPhiMin       = min;  fPhiMax = max; }
-  void                   SetPtRange(Float_t min, Float_t max)  { fPtMin        = min;  fPtMax  = max;  }
   void                   SetCopyArray(Bool_t copy)             { fCopyArray    = copy; }
+  void                   SetEtaRange(Float_t min, Float_t max) { fEtaMin       = min;  fEtaMax = max; }
+  void                   SetGeometryName(const char *n)        { fGeomName     = n;    }
+  void                   SetMarkMC(Bool_t m)                   { fMarkMC       = m;    }
   void                   SetNClusters(Int_t n)                 { fNClusters    = n;    }
   void                   SetNTracks(Int_t n)                   { fNTracks      = n;    }
-  void                   SetGeometryName(const char *n)        { fGeomName     = n;    }
-  void                   SetSuffix(const char *s)              { fSuffix       = s;    }
+  void                   SetPhiRange(Float_t min, Float_t max) { fPhiMin       = min;  fPhiMax = max; }
+  void                   SetPtRange(Float_t min, Float_t max)  { fPtMin        = min;  fPtMax  = max;  }
   void                   SetPtSpectrum(TF1 *f)                 { fPtSpectrum   = f;    }
+  void                   SetSuffix(const char *s)              { fSuffix       = s;    }
+  void                   SetTracksName(const char *n)          { fTracksName   = n;    }
 
  protected:
   AliVCluster           *AddCluster(Double_t e = -1, Double_t eta = -999, Double_t phi = -1);   // add a cluster; if values are -1 generate random parameters
@@ -59,6 +60,7 @@ class AliJetModelBaseTask : public AliAnalysisTaskSE {
   Bool_t                 fCopyArray;              // whether or not the array will be copied to a new one before modelling
   Int_t                  fNClusters;              // how many clusters are being processed
   Int_t                  fNTracks;                // how many tracks are being processed
+  Bool_t                 fMarkMC;                 // whether or not mark new tracks/cluster as MC
   TF1                   *fPtSpectrum;             // pt spectrum parametrization to extract random pt values
   Bool_t                 fIsInit;                 //=true if initialized
   AliEMCALGeometry      *fGeom;                   //!pointer to EMCal geometry
index 4f2172c..ce45221 100644 (file)
@@ -28,6 +28,7 @@ AliJetRandomizerTask::AliJetRandomizerTask() :
   // Default constructor.
 
   SetSuffix("Randomized");
+  SetMarkMC(kFALSE);
 }
 
 //________________________________________________________________________
@@ -37,6 +38,7 @@ AliJetRandomizerTask::AliJetRandomizerTask(const char *name) :
   // Standard constructor.
 
   SetSuffix("Randomized");
+  SetMarkMC(kFALSE);
 }
 
 //________________________________________________________________________