]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCAnalysisTaskcalib.cxx
Removing obsolete function.
[u/mrichter/AliRoot.git] / TPC / AliTPCAnalysisTaskcalib.cxx
index b35e853c2fb89119ae5c321c9ed1b7541cc085ae..b5399a288983793abf4af261b7ce8fe28125369f 100644 (file)
@@ -16,7 +16,8 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //                                                                           //
-// blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa //
+// ANALYSIS task to perrorm TPC calibration                                  //
+
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 #include "AliTPCAnalysisTaskcalib.h"
 #include "AliTPCcalibBase.h"
 #include "AliESDEvent.h"
 #include "AliESDfriend.h"
+#include "AliESDtrack.h"
 #include "AliESDfriendTrack.h"
 #include "AliTPCseed.h"
 #include "AliESDInputHandler.h"
 #include "AliAnalysisManager.h"
+#include "TFile.h"
+#include "TSystem.h"
+#include "TTimeStamp.h"
 
 ClassImp(AliTPCAnalysisTaskcalib)
 
+
+AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib()
+  :AliAnalysisTask(),
+   fCalibJobs(0),
+   fESD(0),
+   fESDfriend(0),
+   fDebugOutputPath()
+{
+  //
+  // default constructor
+  // 
+  
+}
+
+
 AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib(const char *name) 
   :AliAnalysisTask(name,""),
    fCalibJobs(0),
    fESD(0),
-   fESDfriend(0)
+   fESDfriend(0),
+   fDebugOutputPath()
 {
   //
   // Constructor
   //
   DefineInput(0, TChain::Class());
   DefineOutput(0, TObjArray::Class());
-  fCalibJobs.SetOwner(kTRUE);
+  fCalibJobs = new TObjArray(0);
+  fCalibJobs->SetOwner(kTRUE);
 }
 
 AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib() {
   //
   // destructor
   //
-  fCalibJobs.Delete();
+  printf("AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib");
+  fCalibJobs->Delete();
 }
 
 void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
@@ -57,26 +80,31 @@ void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
   // Exec function
   // Loop over tracks and call  Process function
   if (!fESD) {
-    Printf("ERROR: fESD not available");
+    //Printf("ERROR: fESD not available");
     return;
   }
   fESDfriend=static_cast<AliESDfriend*>(fESD->FindListObject("AliESDfriend"));
   if (!fESDfriend) {
-    Printf("ERROR: fESDfriend not available");
+    //Printf("ERROR: fESDfriend not available");
     return;
   }
   Int_t n=fESD->GetNumberOfTracks();
+  Process(fESD);
+  Int_t run = fESD->GetRunNumber();
   for (Int_t i=0;i<n;++i) {
     AliESDfriendTrack *friendTrack=fESDfriend->GetTrack(i);
+    AliESDtrack *track=fESD->GetTrack(i);
     TObject *calibObject=0;
     AliTPCseed *seed=0;
+    if (!friendTrack) continue;
     for (Int_t j=0;(calibObject=friendTrack->GetCalibObject(j));++j)
       if ((seed=dynamic_cast<AliTPCseed*>(calibObject)))
        break;
+    if (track) Process(track, run);
     if (seed)
       Process(seed);
   }
-  PostData(0,&fCalibJobs);
+  PostData(0,fCalibJobs);
 }
 
 void AliTPCAnalysisTaskcalib::ConnectInputData(Option_t *) {
@@ -85,16 +113,16 @@ void AliTPCAnalysisTaskcalib::ConnectInputData(Option_t *) {
   //
   TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
   if (!tree) {
-    Printf("ERROR: Could not read chain from input slot 0");
+    //Printf("ERROR: Could not read chain from input slot 0");
   } 
   else {
     AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
     if (!esdH) {
-      Printf("ERROR: Could not get ESDInputHandler");
+      //Printf("ERROR: Could not get ESDInputHandler");
     } 
     else {
       fESD = esdH->GetEvent();
-      Printf("*** CONNECTED NEW EVENT ****");
+      //Printf("*** CONNECTED NEW EVENT ****");
     }
   }
 }
@@ -103,28 +131,46 @@ void AliTPCAnalysisTaskcalib::CreateOutputObjects() {
   //
   //
   //
+  OpenFile(0, "RECREATE");
 }
 void AliTPCAnalysisTaskcalib::Terminate(Option_t */*option*/) {
   //
   // Terminate
   //
   AliTPCcalibBase *job=0;
-  Int_t njobs = fCalibJobs.GetEntriesFast();
+  Int_t njobs = fCalibJobs->GetEntriesFast();
   for (Int_t i=0;i<njobs;i++){
-    job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i);
+    job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
     if (job) job->Terminate();
   }
+  
 }
 
+void AliTPCAnalysisTaskcalib::FinishTaskOutput()
+{
+  //
+  // According description in AliAnalisysTask this method is call 
+  // on the slaves before sending data
+  //
+  Terminate("slave");
+  RegisterDebugOutput();
+  
+}
+
+
 void AliTPCAnalysisTaskcalib::Process(AliESDEvent *event) {
   //
   // Process ESD event
   //
   AliTPCcalibBase *job=0;
-  Int_t njobs = fCalibJobs.GetEntriesFast();
+  Int_t njobs = fCalibJobs->GetEntriesFast();
   for (Int_t i=0;i<njobs;i++){
-    job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i);
-    if (job) job->Process(event);
+    job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
+    if (job) {
+      job->UpdateEventInfo(event);
+      if (job->AcceptTrigger())
+       job->Process(event);
+    }
   }
 }
 
@@ -133,15 +179,31 @@ void AliTPCAnalysisTaskcalib::Process(AliTPCseed *track) {
   // Process TPC track
   //
   AliTPCcalibBase *job=0;
-  Int_t njobs = fCalibJobs.GetEntriesFast();
+  Int_t njobs = fCalibJobs->GetEntriesFast();
+  for (Int_t i=0;i<njobs;i++){
+    job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
+    if (job)  
+      if (job->AcceptTrigger())
+       job->Process(track);
+  }
+}
+
+void AliTPCAnalysisTaskcalib::Process(AliESDtrack *track, Int_t run) {
+  //
+  // Process ESD track
+  //
+  AliTPCcalibBase *job=0;
+  Int_t njobs = fCalibJobs->GetEntriesFast();
   for (Int_t i=0;i<njobs;i++){
-    job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i);
-    if (job) job->Process(track);
+    job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
+    if (job) 
+      if (job->AcceptTrigger())
+       job->Process(track,run);
   }
 }
 
 Long64_t AliTPCAnalysisTaskcalib::Merge(TCollection *li) {
-  TIterator *i=fCalibJobs.MakeIterator();
+  TIterator *i=fCalibJobs->MakeIterator();
   AliTPCcalibBase *job;
   Long64_t n=0;
   while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next())))
@@ -154,9 +216,43 @@ void AliTPCAnalysisTaskcalib::Analyze() {
   // Analyze the content of the task
   //
   AliTPCcalibBase *job=0;
-  Int_t njobs = fCalibJobs.GetEntriesFast();
+  Int_t njobs = fCalibJobs->GetEntriesFast();
   for (Int_t i=0;i<njobs;i++){
-    job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i);
+    job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
     if (job) job->Analyze();
   }
 }
+
+
+void AliTPCAnalysisTaskcalib::RegisterDebugOutput(){
+  //
+  //
+  //
+  AliTPCcalibBase *job=0;
+  Int_t njobs = fCalibJobs->GetEntriesFast();
+  for (Int_t i=0;i<njobs;i++){
+    job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
+    if (job) job->RegisterDebugOutput(fDebugOutputPath.Data());
+  }
+  TFile fff("CalibObjects.root","recreate");
+  fCalibJobs->Write("TPCCalib",TObject::kSingleKey);
+  fff.Close();
+  //
+  // store  - copy debug output to the destination position
+  // currently ONLY for local copy
+  TString dsName="CalibObjects.root";
+  TString dsName2=fDebugOutputPath.Data();
+  gSystem->MakeDirectory(dsName2.Data());
+  dsName2+=gSystem->HostName();
+  gSystem->MakeDirectory(dsName2.Data());
+  dsName2+="/";
+  TTimeStamp s;
+  dsName2+=Int_t(s.GetNanoSec());
+  dsName2+="/";
+  gSystem->MakeDirectory(dsName2.Data());
+  dsName2+=dsName;
+  AliInfo(Form("copy %s\t%s\n",dsName.Data(),dsName2.Data()));
+  printf("copy %s\t%s\n",dsName.Data(),dsName2.Data());
+  TFile::Cp(dsName.Data(),dsName2.Data());
+
+}