Merge with TRD-develop
[u/mrichter/AliRoot.git] / TRD / AliTRDclusterizer.cxx
index dd2451d..2c18848 100644 (file)
 
 /*
 $Log$
+
+Revision 1.1.4.5  2000/10/15 23:40:01  cblume
+Remove AliTRDconst
+
+Revision 1.1.4.4  2000/10/06 16:49:46  cblume
+Made Getters const
+
+Revision 1.1.4.3  2000/10/04 16:34:58  cblume
+Replace include files by forward declarations
+
+Revision 1.1.4.2  2000/09/22 14:49:49  cblume
+Adapted to tracking code
+
+Revision 1.5  2000/10/02 21:28:19  fca
+Removal of useless dependecies via forward declarations
+
+Revision 1.4  2000/06/09 11:10:07  cblume
+Compiler warnings and coding conventions, next round
+
+Revision 1.3  2000/06/08 18:32:58  cblume
+Make code compliant to coding conventions
+
+Revision 1.2  2000/05/08 16:17:27  cblume
+Merge TRD-develop
+
+Revision 1.1.4.1  2000/05/08 15:08:03  cblume
+Remove the class AliTRDcluster
+
 Revision 1.4  2000/06/09 11:10:07  cblume
 Compiler warnings and coding conventions, next round
 
@@ -40,10 +68,13 @@ Add new TRD classes
 
 #include <TROOT.h>
 #include <TTree.h>
+#include <TFile.h>
 
 #include "AliRun.h"
 #include "AliTRD.h"
 #include "AliTRDclusterizer.h"
+#include "AliTRDrecPoint.h"
+#include "AliTRDgeometry.h"
 
 ClassImp(AliTRDclusterizer)
 
@@ -180,20 +211,63 @@ Bool_t AliTRDclusterizer::Open(const Char_t *name, Int_t nEvent)
 }
 
 //_____________________________________________________________________________
-Bool_t AliTRDclusterizer::WriteCluster()
+Bool_t AliTRDclusterizer::WriteClusters(Int_t det)
 {
   //
-  // Writes out the TRD-cluster
-  //
+  // Fills TRDrecPoints branch in TRDrecPoints## tree with rec. points 
+  // found in detector = det. For det=-1 writes the tree. 
+  // For det=-2 recreates the tree.
+
+  Char_t treeName[14];
+  sprintf(treeName,"TRDrecPoints%d", fEvent);
+
+  if (det == -2) {
+    fInputFile->Delete(treeName);
+    TTree *tree = new TTree(treeName,"Tree with TRD rec. points");
+    tree->Write();
+    return kTRUE;
+  }
 
-  // Write the new tree into the input file (use overwrite option)
-  Char_t treeName[7];
-  sprintf(treeName,"TreeR%d",fEvent);
-  printf("AliTRDclusterizer::WriteCluster -- ");
-  printf("Write the cluster tree %s for event %d.\n"
-        ,treeName,fEvent);
-  gAlice->TreeR()->Write(treeName,2);
+  TTree *tree=(TTree*)fInputFile->Get(treeName);
+  TBranch *branch=tree->GetBranch("TRDrecPoints");
 
-  return kTRUE;
+  if(!branch) {
+    TObjArray *ioArray = 0;
+    branch = tree->Branch("TRDrecPoints","TObjArray",&ioArray,32000,0);
+  }
+
+  if ((det >= 0) && (det < AliTRDgeometry::Ndet())) {
+
+    AliTRD *TRD = (AliTRD*) gAlice->GetDetector("TRD");
+    Int_t nRecPoints = TRD->RecPoints()->GetEntriesFast();
+    TObjArray *fDetRecPoints = new TObjArray(400);
+
+    for (Int_t i=0; i<nRecPoints; i++) {
+      AliTRDrecPoint *p=(AliTRDrecPoint*)TRD->RecPoints()->UncheckedAt(i);
+      if(det == p->GetDetector()) fDetRecPoints->AddLast(p);
+      else printf("attempt to write a RecPoint with unexpected detector index");
+    }
+
+    branch->SetAddress(&fDetRecPoints);
+    tree->Fill();
+    return kTRUE;
+  }
+
+  if (det == -1) {
+
+    printf("\rAliTRDclusterizer::WriteClusters -- ");
+    printf("Writing the cluster tree %-18s for event %d.\n"
+          ,tree->GetName(),fEvent);
+
+    tree->Write();     
+    return kTRUE;  
+  }
+  
+  printf("\rAliTRDclusterizer::WriteClusters -- ");
+  printf("Unexpected detector index %d.\n", det); 
+  return kFALSE;  
 
 }
+
+
+