///////////////////////////////////////////////////////////////////////////////
// //
-// blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa //
+// ANALYSIS task to perrorm TPC calibration //
+
// //
///////////////////////////////////////////////////////////////////////////////
#include "AliTPCAnalysisTaskcalib.h"
#include "AliTPCseed.h"
#include "AliESDInputHandler.h"
#include "AliAnalysisManager.h"
+#include "TFile.h"
+#include "TSystem.h"
+#include "TTimeStamp.h"
ClassImp(AliTPCAnalysisTaskcalib)
fCalibJobs(0),
fESD(0),
fESDfriend(0),
- fDebugOutputPath()
+ fDebugOutputPath("")
{
//
// default constructor
fCalibJobs(0),
fESD(0),
fESDfriend(0),
- fDebugOutputPath()
+ fDebugOutputPath("")
{
//
// Constructor
DefineInput(0, TChain::Class());
DefineOutput(0, TObjArray::Class());
fCalibJobs = new TObjArray(0);
- fCalibJobs->SetOwner(kFALSE);
+ fCalibJobs->SetOwner(kTRUE);
}
AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib() {
// destructor
//
printf("AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib");
- //fCalibJobs->Delete();
+ fCalibJobs->Delete();
}
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();
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;
//
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 ****");
}
}
}
//
//
//
+ //OpenFile(0, "RECREATE");
}
void AliTPCAnalysisTaskcalib::Terminate(Option_t */*option*/) {
//
job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
if (job) job->Terminate();
}
+
}
void AliTPCAnalysisTaskcalib::FinishTaskOutput()
// on the slaves before sending data
//
Terminate("slave");
- RegisterDebugOutput();
+ if(!fDebugOutputPath.IsNull()) {
+ RegisterDebugOutput();
+ }
+
}
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);
+ }
}
}
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);
}
}
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);
}
}
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());
+
}