#include "AliTPCReconstructor.h"
#include "AliRunLoader.h"
#include "AliRun.h"
+#include "AliRawReader.h"
#include "AliTPCclustererMI.h"
#include "AliTPCtrackerMI.h"
#include "AliTPCpidESD.h"
-
+#include "AliTPCParam.h"
+#include "AliTPCParamSR.h"
+#include "AliTPCcalibDB.h"
+#include "AliTracker.h"
+#include "AliMagF.h"
ClassImp(AliTPCReconstructor)
-Double_t AliTPCReconstructor::fgCtgRange = 1.05;
+
+Int_t AliTPCReconstructor::fgStreamLevel = 0; // stream (debug) level
+
+
+AliTPCReconstructor::AliTPCReconstructor():
+AliReconstructor(),
+fClusterer(NULL)
+{
+ //
+ // default constructor
+ //
+ //
+ //
+ AliTPCcalibDB * calib = AliTPCcalibDB::Instance();
+ const AliMagF * field = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+ calib->SetExBField(field->SolenoidField());
+ AliTPCParam* param = GetTPCParam();
+ if (!param) {
+ AliWarning("Loading default TPC parameters !");
+ param = new AliTPCParamSR;
+ }
+ fClusterer = new AliTPCclustererMI(param);
+}
+
+AliTPCReconstructor::AliTPCReconstructor(const AliTPCReconstructor& /*rec*/):
+AliReconstructor(),
+fClusterer(NULL)
+{
+ //
+ // Dummy copu constructor
+ //
+}
+
+AliTPCReconstructor& AliTPCReconstructor::operator=(const AliTPCReconstructor&){
+ //
+ // dummy operator
+ //
+ return *this;
+}
//_____________________________________________________________________________
-void AliTPCReconstructor::Reconstruct(AliRunLoader* runLoader) const
+AliTPCReconstructor::~AliTPCReconstructor()
{
-// reconstruct clusters
+ if (fClusterer) delete fClusterer;
+}
- AliLoader* loader = runLoader->GetLoader("TPCLoader");
- if (!loader) {
- Error("Reconstruct", "TPC loader not found");
- return;
- }
- loader->LoadRecPoints("recreate");
- loader->LoadDigits("read");
-
- AliTPCParam* param = GetTPCParam(runLoader);
- if (!param) return;
- AliTPCclustererMI clusterer(param);
- Int_t nEvents = runLoader->GetNumberOfEvents();
-
- for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
- runLoader->GetEvent(iEvent);
-
- TTree* treeClusters = loader->TreeR();
- if (!treeClusters) {
- loader->MakeTree("R");
- treeClusters = loader->TreeR();
- }
- TTree* treeDigits = loader->TreeD();
- if (!treeDigits) {
- Error("Reconstruct", "Can't get digits tree !");
- return;
- }
-
- clusterer.SetInput(treeDigits);
- clusterer.SetOutput(treeClusters);
- clusterer.Digits2Clusters();
-
- loader->WriteRecPoints("OVERWRITE");
- }
+//_____________________________________________________________________________
+void AliTPCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) const {
+ // single event local reconstruction
+ // of TPC data
+ fClusterer->SetInput(digitsTree);
+ fClusterer->SetOutput(clustersTree);
+ fClusterer->Digits2Clusters();
+}
+
+//_____________________________________________________________________________
+void AliTPCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const {
+ // single event local reconstruction
+ // of TPC data starting from raw data
- loader->UnloadRecPoints();
- loader->UnloadDigits();
+ fClusterer->SetOutput(clustersTree);
+ fClusterer->Digits2Clusters(rawReader);
}
//_____________________________________________________________________________
-AliTracker* AliTPCReconstructor::CreateTracker(AliRunLoader* runLoader) const
+AliTracker* AliTPCReconstructor::CreateTracker() const
{
// create a TPC tracker
- AliTPCParam* param = GetTPCParam(runLoader);
- if (!param) return NULL;
+ AliTPCParam* param = GetTPCParam();
+ if (!param) {
+ AliWarning("Loading default TPC parameters !");
+ param = new AliTPCParamSR;
+ }
+ param->ReadGeoMatrices();
return new AliTPCtrackerMI(param);
}
//_____________________________________________________________________________
-void AliTPCReconstructor::FillESD(AliRunLoader* /*runLoader*/,
- AliESD* esd) const
+void AliTPCReconstructor::FillESD(TTree */*digitsTree*/, TTree */*clustersTree*/,
+ AliESDEvent* esd) const
{
// make PID
- Double_t parTPC[] = {47., 0.10, 10.};
+ Double_t parTPC[] = {50., 0.07, 5.}; // MIP nnormalized to channel 50 -MI
AliTPCpidESD tpcPID(parTPC);
tpcPID.MakePID(esd);
}
//_____________________________________________________________________________
-AliTPCParam* AliTPCReconstructor::GetTPCParam(AliRunLoader* runLoader) const
+AliTPCParam* AliTPCReconstructor::GetTPCParam() const
{
// get the TPC parameters
- TDirectory* saveDir = gDirectory;
- runLoader->CdGAFile();
-
- AliTPCParam* param = (AliTPCParam*) gDirectory->Get("75x40_100x60_150x60");
- if (!param) Error("GetTPCParam", "no TPC parameters found");
+ AliTPCParam* param = AliTPCcalibDB::Instance()->GetParameters();
- saveDir->cd();
return param;
}