From 7941072e174b2fef4fbd956015ac3955dad02ae7 Mon Sep 17 00:00:00 2001 From: hristov Date: Wed, 23 Jul 2003 07:13:44 +0000 Subject: [PATCH] Fix for transient fSDigits, AliITSRawStream classes adapted to changed AliRawReader class, AliITSclustererV2 updated for raw data input and NewIO output, AliITSRawClusterer.C was changed accordingly (T.Kuhr) --- ITS/AliITS.cxx | 2 +- ITS/AliITSRawClusterer.C | 33 ++++++++++++++++------------- ITS/AliITSRawStream.cxx | 3 ++- ITS/AliITSRawStream.h | 5 ++++- ITS/AliITSRawStreamSDD.cxx | 9 ++++---- ITS/AliITSRawStreamSDD.h | 3 +-- ITS/AliITSRawStreamSPD.cxx | 7 ++++--- ITS/AliITSRawStreamSPD.h | 4 +--- ITS/AliITSRawStreamSSD.cxx | 9 ++++---- ITS/AliITSRawStreamSSD.h | 3 +-- ITS/AliITSclustererV2.cxx | 43 +++++++++++++++++++++++--------------- ITS/AliITSclustererV2.h | 3 ++- 12 files changed, 70 insertions(+), 54 deletions(-) diff --git a/ITS/AliITS.cxx b/ITS/AliITS.cxx index 5704522f241..30eb3faabac 100644 --- a/ITS/AliITS.cxx +++ b/ITS/AliITS.cxx @@ -846,7 +846,7 @@ void AliITS::MakeBranchS(const char *fl){ sprintf(branchname,"%s",GetName()); - if(fSDigits && fLoader->TreeS()){ + if(fLoader->TreeS()){ if (fSDigits == 0x0) fSDigits = new TClonesArray("AliITSpListItem",1000); MakeBranchInTree(fLoader->TreeS(),branchname,&fSDigits,buffersize,fl); } // end if diff --git a/ITS/AliITSRawClusterer.C b/ITS/AliITSRawClusterer.C index 46f5723c647..57ae274affb 100644 --- a/ITS/AliITSRawClusterer.C +++ b/ITS/AliITSRawClusterer.C @@ -1,28 +1,31 @@ #if !defined(__CINT__) || defined(__MAKECINT__) +#include "AliRun.h" #include "AliITS.h" #include "AliITSgeom.h" #include "AliITSclustererV2.h" +#include "AliRawReaderRoot.h" +#include "AliRunLoader.h" #include #include #endif -void AliITSRawClusterer(const char* fileNameParam = "its.digits.root", - const char* fileNameClusters = "its.clusters.root") +void AliITSRawClusterer(const char* fileNameRawData = "event.root", + Int_t iEvent = 0, + const char* fileNameGalice = "galice.root") { - delete gAlice; - TFile* file = TFile::Open(fileNameParam); - AliRun* gAlice = (AliRun*) file->Get("gAlice"); - AliITS* its = (AliITS*) gAlice->GetModule("ITS"); - AliITSgeom* geom = (AliITSgeom*) its->GetITSgeom(); - AliITSclustererV2 clusterer(geom); +// To run the cluster finder on raw data a galice.root file is needed. +// This file has to contain a run loader, a loader for ITS and +// the geometry of the ITS + + AliRawReaderRoot rawReader(fileNameRawData, iEvent); - TFile* out = TFile::Open(fileNameClusters, "recreate"); - geom->Write(); + AliRunLoader* runLoader = AliRunLoader::Open(fileNameGalice); + runLoader->CdGAFile(); + AliITSgeom* geom = (AliITSgeom*) gFile->Get("AliITSgeom"); + AliITSclustererV2 clusterer(geom); - clusterer.Digits2Clusters(out); + runLoader->GetLoader("ITSLoader")->LoadRecPoints("recreate"); + runLoader->SetEventNumber(iEvent); - out->Close(); - delete out; - file->Close(); - delete file; + clusterer.Digits2Clusters(&rawReader); } diff --git a/ITS/AliITSRawStream.cxx b/ITS/AliITSRawStream.cxx index ced2513a412..733d17b4688 100644 --- a/ITS/AliITSRawStream.cxx +++ b/ITS/AliITSRawStream.cxx @@ -25,9 +25,10 @@ ClassImp(AliITSRawStream) -AliITSRawStream::AliITSRawStream() +AliITSRawStream::AliITSRawStream(AliRawReader* rawReader) { // create an object to read ITS raw digits + fRawReader = rawReader; fModuleID = fPrevModuleID = fCoord1 = fCoord2 = fSignal = -1; } diff --git a/ITS/AliITSRawStream.h b/ITS/AliITSRawStream.h index 44dd216802e..7dffd8d92a3 100644 --- a/ITS/AliITSRawStream.h +++ b/ITS/AliITSRawStream.h @@ -4,11 +4,12 @@ * See cxx source for full Copyright notice */ #include +#include "AliRawReader.h" class AliITSRawStream: public TObject { public : - AliITSRawStream(); + AliITSRawStream(AliRawReader* rawReader); virtual Bool_t Next() = 0; @@ -20,6 +21,8 @@ class AliITSRawStream: public TObject { inline Int_t GetSignal() const {return fSignal;}; protected : + AliRawReader* fRawReader; // object for reading the raw data + Int_t fModuleID; // index of current module Int_t fPrevModuleID; // index of previous module Int_t fCoord1; // current 1st coordinate diff --git a/ITS/AliITSRawStreamSDD.cxx b/ITS/AliITSRawStreamSDD.cxx index 64f5c47a86e..28c0fe6674b 100644 --- a/ITS/AliITSRawStreamSDD.cxx +++ b/ITS/AliITSRawStreamSDD.cxx @@ -42,11 +42,12 @@ const Int_t AliITSRawStreamSDD::kDDLModuleMap[kDDLsNumber][kModulesPerDDL] = { {458,459,464,465,466,467,472,473,474,475,480,481,482,483,488,489,490,491,496,497,498,499}}; -AliITSRawStreamSDD::AliITSRawStreamSDD() : - fRawReader("SDDslice", kTRUE) +AliITSRawStreamSDD::AliITSRawStreamSDD(AliRawReader* rawReader) : + AliITSRawStream(rawReader) { // create an object to read ITS SDD raw digits + fRawReader->Select(2); } @@ -56,10 +57,10 @@ Bool_t AliITSRawStreamSDD::Next() // returns kFALSE if there is no digit left fPrevModuleID = fModuleID; - if (!fRawReader.ReadNextInt(fData)) return kFALSE; + if (!fRawReader->ReadNextInt(fData)) return kFALSE; UInt_t relModuleID = (fData >> 25) & 0x0000007F; - fModuleID = kDDLModuleMap[fRawReader.GetDDLID()][relModuleID]; + fModuleID = kDDLModuleMap[fRawReader->GetDDLID()][relModuleID]; fCoord1 = (fData >> 16) & 0x000001FF; fCoord2 = (fData >> 8) & 0x000000FF; fSignal = fData & 0x000000FF; diff --git a/ITS/AliITSRawStreamSDD.h b/ITS/AliITSRawStreamSDD.h index 4152c0a5b51..74909a9032b 100644 --- a/ITS/AliITSRawStreamSDD.h +++ b/ITS/AliITSRawStreamSDD.h @@ -9,7 +9,7 @@ class AliITSRawStreamSDD: public AliITSRawStream { public : - AliITSRawStreamSDD(); + AliITSRawStreamSDD(AliRawReader* rawReader); virtual Bool_t Next(); @@ -21,7 +21,6 @@ class AliITSRawStreamSDD: public AliITSRawStream { static const Int_t kDDLModuleMap[kDDLsNumber][kModulesPerDDL]; private : - AliRawReader fRawReader; // object for reading the raw data file UInt_t fData; // data read for file ClassDef(AliITSRawStreamSDD, 0) // class for reading ITS SDD raw digits diff --git a/ITS/AliITSRawStreamSPD.cxx b/ITS/AliITSRawStreamSPD.cxx index 14d74687861..d46338f80a8 100644 --- a/ITS/AliITSRawStreamSPD.cxx +++ b/ITS/AliITSRawStreamSPD.cxx @@ -25,11 +25,12 @@ ClassImp(AliITSRawStreamSPD) -AliITSRawStreamSPD::AliITSRawStreamSPD() : - fRawReader("SPDslice", kTRUE) +AliITSRawStreamSPD::AliITSRawStreamSPD(AliRawReader* rawReader) : + AliITSRawStream(rawReader) { // create an object to read ITS SPD raw digits + fRawReader->Select(1); } @@ -39,7 +40,7 @@ Bool_t AliITSRawStreamSPD::Next() // returns kFALSE if there is no digit left fPrevModuleID = fModuleID; - while (fRawReader.ReadNextShort(fData)) { + while (fRawReader->ReadNextShort(fData)) { if ((fData & 0xE000) == 0x6000) { // header fHitCount = 0; diff --git a/ITS/AliITSRawStreamSPD.h b/ITS/AliITSRawStreamSPD.h index 816765fa3f4..47f12003c3c 100644 --- a/ITS/AliITSRawStreamSPD.h +++ b/ITS/AliITSRawStreamSPD.h @@ -4,12 +4,11 @@ * See cxx source for full Copyright notice */ #include "AliITSRawStream.h" -#include "AliRawReader.h" class AliITSRawStreamSPD: public AliITSRawStream { public : - AliITSRawStreamSPD(); + AliITSRawStreamSPD(AliRawReader* rawReader); virtual Bool_t Next(); @@ -17,7 +16,6 @@ class AliITSRawStreamSPD: public AliITSRawStream { inline Int_t GetColumn() const {return fCoord2;}; private : - AliRawReader fRawReader; // object for reading the raw data file UShort_t fData; // data read for file UInt_t fOffset; // offset for cell column UInt_t fHitCount; // counter of hits diff --git a/ITS/AliITSRawStreamSSD.cxx b/ITS/AliITSRawStreamSSD.cxx index f7de2d037dc..f8bbc8471a6 100644 --- a/ITS/AliITSRawStreamSSD.cxx +++ b/ITS/AliITSRawStreamSSD.cxx @@ -207,11 +207,12 @@ const Int_t AliITSRawStreamSSD::kDDLModuleMap[kDDLsNumber][kModulesPerDDL] = { }; -AliITSRawStreamSSD::AliITSRawStreamSSD() : - fRawReader("SSDslice", kTRUE) +AliITSRawStreamSSD::AliITSRawStreamSSD(AliRawReader* rawReader) : + AliITSRawStream(rawReader) { // create an object to read ITS SSD raw digits + fRawReader->Select(3); } @@ -221,10 +222,10 @@ Bool_t AliITSRawStreamSSD::Next() // returns kFALSE if there is no digit left fPrevModuleID = fModuleID; - if (!fRawReader.ReadNextInt(fData)) return kFALSE; + if (!fRawReader->ReadNextInt(fData)) return kFALSE; UInt_t relModuleID = (fData >> 21) & 0x000007FF; - fModuleID = kDDLModuleMap[fRawReader.GetDDLID()][relModuleID]; + fModuleID = kDDLModuleMap[fRawReader->GetDDLID()][relModuleID]; fCoord1 = (fData >> 20) & 0x00000001; fCoord2 = (fData >> 10) & 0x000003FF; fSignal = (fData & 0x000003FF) + 1; diff --git a/ITS/AliITSRawStreamSSD.h b/ITS/AliITSRawStreamSSD.h index bf0fff15ac1..c1ca960f86f 100644 --- a/ITS/AliITSRawStreamSSD.h +++ b/ITS/AliITSRawStreamSSD.h @@ -9,7 +9,7 @@ class AliITSRawStreamSSD: public AliITSRawStream { public : - AliITSRawStreamSSD(); + AliITSRawStreamSSD(AliRawReader* rawReader); virtual Bool_t Next(); @@ -21,7 +21,6 @@ class AliITSRawStreamSSD: public AliITSRawStream { static const Int_t kDDLModuleMap[kDDLsNumber][kModulesPerDDL]; private : - AliRawReader fRawReader; // object for reading the raw data file UInt_t fData; // data read for file ClassDef(AliITSRawStreamSSD, 0) // class for reading ITS SSD raw digits diff --git a/ITS/AliITSclustererV2.cxx b/ITS/AliITSclustererV2.cxx index 452c53bd6b1..5019fe1f446 100644 --- a/ITS/AliITSclustererV2.cxx +++ b/ITS/AliITSclustererV2.cxx @@ -10,6 +10,7 @@ #include "AliITSclustererV2.h" #include "AliITSclusterV2.h" +#include "AliRawReader.h" #include "AliITSRawStreamSPD.h" #include "AliITSRawStreamSDD.h" #include "AliITSRawStreamSSD.h" @@ -140,37 +141,47 @@ Int_t AliITSclustererV2::Digits2Clusters(TTree *dTree, TTree *cTree) { delete digitsSDD; delete digitsSSD; + //delete dTree; + Info("Digits2Clusters","Number of found clusters : %d",ncl); return 0; } -void AliITSclustererV2::Digits2Clusters(TFile *out) { +void AliITSclustererV2::Digits2Clusters(AliRawReader* rawReader) { //------------------------------------------------------------ // This function creates ITS clusters from raw data //------------------------------------------------------------ - TDirectory *savedir=gDirectory; - if (!out->IsOpen()) { - Error("Digits2Clusters","Output file not open !"); + AliRunLoader* runLoader = AliRunLoader::GetRunLoader(); + if (!runLoader) { + Error("Digits2Clusters", "no run loader found"); + return; + } + AliLoader* itsLoader = runLoader->GetLoader("ITSLoader"); + if (!itsLoader) { + Error("Digits2Clusters", "no loader for ITS found"); return; } - out->cd(); + if (!itsLoader->TreeR()) itsLoader->MakeTree("R"); + TTree* cTree = itsLoader->TreeR(); - Char_t name[100]; - sprintf(name,"TreeC_ITS_%d",fEvent); - TTree cTree(name,"ITS clusters V2"); TClonesArray *array=new TClonesArray("AliITSclusterV2",1000); - cTree.Branch("Clusters",&array); + cTree->Branch("Clusters",&array); delete array; TClonesArray** clusters = new TClonesArray*[fNModules]; // one TClonesArray per module - AliITSRawStreamSPD inputSPD; + rawReader->Reset(); + AliITSRawStreamSPD inputSPD(rawReader); FindClustersSPD(&inputSPD, clusters); - AliITSRawStreamSDD inputSDD; + + rawReader->Reset(); + AliITSRawStreamSDD inputSDD(rawReader); FindClustersSDD(&inputSDD, clusters); - AliITSRawStreamSSD inputSSD; + + rawReader->Reset(); + AliITSRawStreamSSD inputSSD(rawReader); FindClustersSSD(&inputSSD, clusters); // write all clusters to the tree @@ -181,14 +192,12 @@ void AliITSclustererV2::Digits2Clusters(TFile *out) { Error("Digits2Clusters", "data for module %d missing!", iModule); array = new TClonesArray("AliITSclusterV2"); } - cTree.SetBranchAddress("Clusters", &array); - cTree.Fill(); + cTree->SetBranchAddress("Clusters", &array); + cTree->Fill(); nClusters += array->GetEntriesFast(); delete array; } - cTree.Write(); - - savedir->cd(); + itsLoader->WriteRecPoints("OVERWRITE"); Info("Digits2Clusters", "total number of found clusters in ITS: %d\n", nClusters); diff --git a/ITS/AliITSclustererV2.h b/ITS/AliITSclustererV2.h index 177a79c0c95..4786349ae6b 100644 --- a/ITS/AliITSclustererV2.h +++ b/ITS/AliITSclustererV2.h @@ -17,6 +17,7 @@ class TClonesArray; class AliITSgeom; class AliITSclusterV2; +class AliRawReader; class AliITSRawStream; class AliITSclustererV2 : public TObject { @@ -26,7 +27,7 @@ public: void SetEvent(Int_t event) { fEvent=event; } Int_t Digits2Clusters(TTree *in, TTree *out); - void Digits2Clusters(TFile *out); + void Digits2Clusters(AliRawReader* rawReader); void FindClustersSPD(const TClonesArray *dig, TClonesArray *cls); void FindClustersSPD(AliITSRawStream* input, TClonesArray** clusters); void FindClustersSDD(const TClonesArray *dig, TClonesArray *cls); -- 2.43.0