]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/EMCALJetTasks/AliJetEmbeddingTask.cxx
name of task
[u/mrichter/AliRoot.git] / PWGGA / EMCALJetTasks / AliJetEmbeddingTask.cxx
index 7a71875f1b4aa0e83967570064fd82587fe069d5..3792a1762da2f2742d763ef6d66e1ef924147218 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Jet embedding task.
 //
-// Author: Salvatore Aiola, Constantin Loizides
+// Author: S.Aiola, C.Loizides
 
 #include <TClonesArray.h>
 #include <TLorentzVector.h>
@@ -23,55 +23,18 @@ ClassImp(AliJetEmbeddingTask)
 
 //________________________________________________________________________
 AliJetEmbeddingTask::AliJetEmbeddingTask() : 
-  AliAnalysisTaskSE("AliJetEmbeddingTask"),
-  fGeomName(),
-  fTracksName(),
-  fOutTracksName(),
-  fCaloName(),
-  fOutCaloName(),
-  fEtaMin(-1),
-  fEtaMax(1),
-  fPhiMin(0),
-  fPhiMax(TMath::Pi() * 2),
-  fPtMin(0),
-  fPtMax(0),
-  fCopyArray(kTRUE),
-  fNEmbClusters(0),
-  fNEmbTracks(0),
-  fGeom(0),
-  fClusters(0),
-  fOutClusters(0),
-  fTracks(0),
-  fOutTracks(0)
+  AliJetModelBaseTask("AliJetEmbeddingTask")
 {
   // Default constructor.
+  SetSuffix("Embedded");
 }
 
 //________________________________________________________________________
 AliJetEmbeddingTask::AliJetEmbeddingTask(const char *name) : 
-  AliAnalysisTaskSE(name),
-  fGeomName(""),
-  fTracksName("PicoTracks"),
-  fOutTracksName("PicoTracksEmbedded"),
-  fCaloName("CaloClustersCorr"),
-  fOutCaloName("CaloClustersCorrEmbedded"),
-  fEtaMin(-1),
-  fEtaMax(1),
-  fPhiMin(0),
-  fPhiMax(TMath::Pi() * 2),
-  fPtMin(50),
-  fPtMax(60),
-  fCopyArray(kTRUE),
-  fNEmbClusters(0),
-  fNEmbTracks(1),
-  fGeom(0),
-  fClusters(0),
-  fOutClusters(0),
-  fTracks(0),
-  fOutTracks(0)
+  AliJetModelBaseTask(name)
 {
   // Standard constructor.
-
+  SetSuffix("Embedded");
 }
 
 //________________________________________________________________________
@@ -81,156 +44,35 @@ AliJetEmbeddingTask::~AliJetEmbeddingTask()
 }
 
 //________________________________________________________________________
-void AliJetEmbeddingTask::Init()
+void AliJetEmbeddingTask::UserExec(Option_t *) 
 {
-  // Init task.
-
-  if (fNEmbTracks > 0) {
-    fTracks = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTracksName));
-
-    if (strcmp(fTracks->GetClass()->GetName(), "AliPicoTrack")) {
-      AliError("Can only embed PicoTracks!");
-      return;
-    }
-    if (!fTracks) {
-      AliError(Form("Couldn't retrieve tracks with name %s!", fTracksName.Data()));
-      return;
-    }
-
-    if (!fOutTracks) {
-      fOutTracksName = fTracksName;
-      if (fCopyArray) {
-       fOutTracksName += "Embedded";
-       fOutTracks = new TClonesArray(*fTracks);
-       fOutTracks->SetName(fOutTracksName);
-      }
-      else {
-       fOutTracks = fTracks;
-      }
-    }
-
-    if (fCopyArray) {
-      if (!(InputEvent()->FindListObject(fOutTracksName)))
-       InputEvent()->AddObject(fOutTracks);
-      fOutTracks->Clear();
-    }
-  }
-
-  if (fNEmbClusters > 0) {
-    fClusters = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fCaloName));
-    if (!fClusters) {
-      AliError(Form("Couldn't retrieve clusters with name %s!", fCaloName.Data()));
-      return;
-    }
-
-    if (!fOutClusters) {
-      fOutCaloName = fCaloName;
-      if (fCopyArray) {
-       fOutCaloName += "Embedded";
-       fOutClusters = new TClonesArray(*fClusters);
-       fOutClusters->SetName(fOutCaloName);
-      }
-      else {
-       fOutClusters = fClusters;
-      }
-    }
+  // Execute per event.
 
-    if (fCopyArray) {
-      if (!(InputEvent()->FindListObject(fOutCaloName)))
-       InputEvent()->AddObject(fOutClusters);
-      fOutClusters->Clear();
-    }
+  if (!fIsInit) {
+    ExecOnce();
+    fIsInit = 1;
   }
-
-    if (!fGeom) {
-      if (fGeomName.Length()>0) {
-        fGeom = AliEMCALGeometry::GetInstance(fGeomName);
-        if (!fGeom)
-          AliError(Form("Could not get geometry with name %s!", fGeomName.Data()));
-      } else {
-        fGeom = AliEMCALGeometry::GetInstance();
-        if (!fGeom) 
-          AliError("Could not get default geometry!");
-      }
-    }
+  Run();
 }
 
 //________________________________________________________________________
-void AliJetEmbeddingTask::Embed() 
+void AliJetEmbeddingTask::Run() 
 {
   // Embed particles.
-
-  if (fNEmbClusters > 0 && fOutClusters) {
-    const Int_t nClusters = fOutClusters->GetEntriesFast();
-    TClonesArray digits("AliEMCALDigit", 1);
-    for (Int_t i = 0; i < fNEmbClusters; ++i) {
-      Double_t pt  = gRandom->Rndm() * (fPtMax - fPtMin) + fPtMin;
-      Double_t eta = gRandom->Rndm() * (fEtaMax - fEtaMin) + fEtaMin;
-      Double_t phi = gRandom->Rndm() * (fPhiMax - fPhiMin) + fPhiMin;
-    
-      TLorentzVector nPart;
-      nPart.SetPtEtaPhiM(pt, eta, phi, 0);
-      Double_t e = nPart.E();
-      
-      Int_t absId = 0;
-      fGeom->GetAbsCellIdFromEtaPhi(eta, phi, absId);
-      
-      AliEMCALDigit *digit = static_cast<AliEMCALDigit*>(digits.New(0));
-      digit->SetId(absId);
-      digit->SetIndexInList(0);
-      digit->SetType(AliEMCALDigit::kHG);
-      digit->SetAmplitude(e);
-      
-      AliEMCALRecPoint recPoint;
-      recPoint.AddDigit(*digit, e, kFALSE);
-      recPoint.EvalGlobalPosition(0, &digits);
-
-      TVector3 gpos;
-      recPoint.GetGlobalPosition(gpos);
-      Float_t g[3];
-      gpos.GetXYZ(g);
-      
-      AliVCluster *cluster = static_cast<AliVCluster*>(fOutClusters->New(nClusters + i));
-      cluster->SetType(AliVCluster::kEMCALClusterv1);
-      cluster->SetE(recPoint.GetEnergy());
-      cluster->SetPosition(g);
-      cluster->SetNCells(1);
-      UShort_t shortAbsId = absId;
-      cluster->SetCellsAbsId(&shortAbsId);
-      cluster->SetCellsAmplitudeFraction(NULL);
-      cluster->SetID(nClusters + i);
-      cluster->SetEmcCpvDistance(-1);
-      cluster->SetChi2(100); // MC flag!
+  
+  if (fNClusters > 0 && fOutClusters) {
+    if (fCopyArray) 
+      CopyClusters();
+    for (Int_t i = 0; i < fNClusters; ++i) {
+      AddCluster();
     }
   }
  
-  if (fNEmbTracks > 0 && fOutTracks) {
-    Int_t nTracks = fOutTracks->GetEntriesFast();
-    for (Int_t i = 0; i < fNEmbTracks; ++i) {
-      Double_t pt  = gRandom->Rndm() * (fPtMax - fPtMin) + fPtMin;
-      Double_t eta = gRandom->Rndm() * (fEtaMax - fEtaMin) + fEtaMin;
-      Double_t phi = gRandom->Rndm() * (fPhiMax - fPhiMin) + fPhiMin;
-      
-      new ((*fOutTracks)[nTracks + i]) AliPicoTrack(pt, 
-                                                   eta, 
-                                                   phi, 
-                                                   1, 
-                                                   100,    // MC flag!      
-                                                   0, 
-                                                   0, 
-                                                   kFALSE);
+  if (fNTracks > 0 && fOutTracks) {
+    if (fCopyArray) 
+      CopyTracks();
+    for (Int_t i = 0; i < fNTracks; ++i) {
+      AddTrack();
     }
   }
 }
-
-//________________________________________________________________________
-void AliJetEmbeddingTask::UserExec(Option_t *) 
-{
-  // Execute per event.
-
-  Init();
-
-  Embed();
-}