Fix for transient fSDigits, AliITSRawStream classes adapted to changed AliRawReader...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Jul 2003 07:13:44 +0000 (07:13 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Jul 2003 07:13:44 +0000 (07:13 +0000)
12 files changed:
ITS/AliITS.cxx
ITS/AliITSRawClusterer.C
ITS/AliITSRawStream.cxx
ITS/AliITSRawStream.h
ITS/AliITSRawStreamSDD.cxx
ITS/AliITSRawStreamSDD.h
ITS/AliITSRawStreamSPD.cxx
ITS/AliITSRawStreamSPD.h
ITS/AliITSRawStreamSSD.cxx
ITS/AliITSRawStreamSSD.h
ITS/AliITSclustererV2.cxx
ITS/AliITSclustererV2.h

index 5704522f2417dc9fb94c073732e8dfccfd8f8adc..30eb3faabac1f11812ee1116829e8c69dd71afa0 100644 (file)
@@ -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
index 46f5723c647bf891d3a276745035434169df5a8b..57ae274affb9b44ad9ffe00b451817240a9563a1 100644 (file)
@@ -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 <TFile.h>
 #include <TTree.h>
 #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);
 }
index ced2513a412127362557f75b83a1e9e47802d41a..733d17b468816be5404d76aef44423553b2437ae 100644 (file)
 ClassImp(AliITSRawStream)
 
 
-AliITSRawStream::AliITSRawStream()
+AliITSRawStream::AliITSRawStream(AliRawReader* rawReader)
 {
 // create an object to read ITS raw digits
 
+  fRawReader = rawReader;
   fModuleID = fPrevModuleID = fCoord1 = fCoord2 = fSignal = -1;
 }
index 44dd216802ec25e016681e208973c2b7cca25301..7dffd8d92a375daaa383fc809974a6beda07cfcc 100644 (file)
@@ -4,11 +4,12 @@
  * See cxx source for full Copyright notice                               */
 
 #include <TObject.h>
+#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
index 64f5c47a86e2f9e8bc27cd733605cb1eb520b781..28c0fe6674b5de0dbff955a29c65bc1ad2390bba 100644 (file)
@@ -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;
index 4152c0a5b517b8278a68b1eb5920dcaa7e95fcce..74909a9032b830efd8d52601b6cf4ad1cb06b50d 100644 (file)
@@ -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
index 14d74687861348e78421f3d84aad4f69bcd46dc5..d46338f80a84d6ded21947111c8b8cf9cac37d1a 100644 (file)
 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;
index 816765fa3f4609e23d654c615b1cb0529d8f002c..47f12003c3c0273cf9a06cee0aa1afd895f8e357 100644 (file)
@@ -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
index f7de2d037dc012ba21b4996c867c0844ffb56b1c..f8bbc8471a6283a42c4d0f0592fc6a92b9a128f2 100644 (file)
@@ -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;
index bf0fff15ac1f592a26e4e1e05237dd43c6300703..c1ca960f86f65a65fc3d3f6569ada696686c14be 100644 (file)
@@ -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
index 452c53bd6b1a6541bc238502af272c1c32b49ba7..5019fe1f44627a5e3eb650e7fd3e4edded771554 100644 (file)
@@ -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);
index 177a79c0c95b7ff72758b3062895b9f90fe993c2..4786349ae6b66b95bd016f14b214be2b85774df2 100644 (file)
@@ -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);