]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCAnalysisTaskcalib.cxx
one more tpcrefit added
[u/mrichter/AliRoot.git] / TPC / AliTPCAnalysisTaskcalib.cxx
index aa0cd235fb4ea42350490deef1c5c83a52ea4fd6..cd45550adedb44b37a46304f9d01beaaaf52bb46 100644 (file)
@@ -30,6 +30,9 @@
 #include "AliTPCseed.h"
 #include "AliESDInputHandler.h"
 #include "AliAnalysisManager.h"
+#include "TFile.h"
+#include "TSystem.h"
+#include "TTimeStamp.h"
 
 ClassImp(AliTPCAnalysisTaskcalib)
 
@@ -39,7 +42,7 @@ AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib()
    fCalibJobs(0),
    fESD(0),
    fESDfriend(0),
-   fDebugOutputPath()
+   fDebugOutputPath("")
 {
   //
   // default constructor
@@ -53,7 +56,7 @@ AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib(const char *name)
    fCalibJobs(0),
    fESD(0),
    fESDfriend(0),
-   fDebugOutputPath()
+   fDebugOutputPath("")
 {
   //
   // Constructor
@@ -61,7 +64,7 @@ AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib(const char *name)
   DefineInput(0, TChain::Class());
   DefineOutput(0, TObjArray::Class());
   fCalibJobs = new TObjArray(0);
-  fCalibJobs->SetOwner(kFALSE);
+  fCalibJobs->SetOwner(kTRUE);
 }
 
 AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib() {
@@ -69,7 +72,7 @@ AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib() {
   // destructor
   //
   printf("AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib");
-  //fCalibJobs->Delete();
+  fCalibJobs->Delete();
 }
 
 void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
@@ -85,6 +88,7 @@ void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
     //Printf("ERROR: fESDfriend not available");
     return;
   }
+  if (fESDfriend->TestSkipBit()) return;
   Int_t n=fESD->GetNumberOfTracks();
   Process(fESD);
   Int_t run = fESD->GetRunNumber();
@@ -93,6 +97,7 @@ void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
     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;
@@ -127,7 +132,11 @@ void AliTPCAnalysisTaskcalib::CreateOutputObjects() {
   //
   //
   //
+  //OpenFile(0, "RECREATE");
+
+  PostData(0,fCalibJobs);
 }
+
 void AliTPCAnalysisTaskcalib::Terminate(Option_t */*option*/) {
   //
   // Terminate
@@ -138,6 +147,7 @@ void AliTPCAnalysisTaskcalib::Terminate(Option_t */*option*/) {
     job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
     if (job) job->Terminate();
   }
+  
 }
 
 void AliTPCAnalysisTaskcalib::FinishTaskOutput()
@@ -147,7 +157,10 @@ void AliTPCAnalysisTaskcalib::FinishTaskOutput()
   // on the slaves before sending data
   //
   Terminate("slave");
-  RegisterDebugOutput();
+  if(!fDebugOutputPath.IsNull()) { 
+    RegisterDebugOutput();
+  }
+  
 }
 
 
@@ -159,7 +172,11 @@ void AliTPCAnalysisTaskcalib::Process(AliESDEvent *event) {
   Int_t njobs = fCalibJobs->GetEntriesFast();
   for (Int_t i=0;i<njobs;i++){
     job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
-    if (job) job->Process(event);
+    if (job) {
+      job->UpdateEventInfo(event);
+      if (job->AcceptTrigger())
+       job->Process(event);
+    }
   }
 }
 
@@ -171,7 +188,9 @@ void AliTPCAnalysisTaskcalib::Process(AliTPCseed *track) {
   Int_t njobs = fCalibJobs->GetEntriesFast();
   for (Int_t i=0;i<njobs;i++){
     job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
-    if (job) job->Process(track);
+    if (job)  
+      if (job->AcceptTrigger())
+       job->Process(track);
   }
 }
 
@@ -183,7 +202,9 @@ void AliTPCAnalysisTaskcalib::Process(AliESDtrack *track, Int_t run) {
   Int_t njobs = fCalibJobs->GetEntriesFast();
   for (Int_t i=0;i<njobs;i++){
     job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
-    if (job) job->Process(track,run);
+    if (job) 
+      if (job->AcceptTrigger())
+       job->Process(track,run);
   }
 }
 
@@ -219,4 +240,26 @@ void AliTPCAnalysisTaskcalib::RegisterDebugOutput(){
     job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
     if (job) job->RegisterDebugOutput(fDebugOutputPath.Data());
   }
+  TString dsName=GetName();
+  dsName+=".root";
+  TFile fff(dsName.Data(),"recreate");
+  fCalibJobs->Write("TPCCalib",TObject::kSingleKey);
+  fff.Close();
+  //
+  // store  - copy debug output to the destination position
+  // currently ONLY for local copy
+  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());
+
 }