]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0.cxx
memory leak fixed
[u/mrichter/AliRoot.git] / T0 / AliT0.cxx
index 23c791d655a7cf6676e289dc8a627746890b461b..d2c2c78725a1746585fe8dad397393e90036238c 100644 (file)
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include <Riostream.h>
-
-#include <TFile.h>
-#include <TGeometry.h>
-#include <TMath.h>
-#include <TNode.h>
-#include <TParticle.h>
-#include <TRandom.h>
-#include <TTUBE.h>
-#include <TVirtualMC.h>
+#include "TClonesArray.h"
+#include "TString.h"
 
+#include "AliLoader.h"
+#include "AliLog.h"
 #include "AliLog.h"
 #include "AliMC.h"
-#include "AliLoader.h"
 #include "AliRun.h"
-#include "TClonesArray.h"
 #include "AliT0.h"
-#include "AliT0Loader.h"
-#include "AliT0digit.h"
-#include "AliT0hit.h"
 #include "AliT0Digitizer.h"
 #include "AliT0RawData.h"
 #include "AliT0RecPoint.h"
-#include "AliT0Parameters.h"
-#include "AliLog.h"
-
+#include "AliT0digit.h"
+#include "AliT0hit.h"
 ClassImp(AliT0)
 
   //static  AliT0digit *digits; 
@@ -103,6 +91,7 @@ AliT0::AliT0(const char *name, const char *title)
 //_____________________________________________________________________________
 AliT0::~AliT0() {
   
+  //destructor
   if (fHits) {
     fHits->Delete();
     delete fHits;
@@ -157,44 +146,6 @@ void AliT0::AddDigit(Int_t besttimeright, Int_t besttimeleft, Int_t meantime,
   fDigits->SetRefPoint(refpoint);
 }
 
-
-//_____________________________________________________________________________
-void AliT0::BuildGeometry()
-{
-  //
-  // Build simple ROOT TNode geometry for event display
-  //
-  TNode *node, *top;
-  const int kColorT0  = 19;
-
-  top=gAlice->GetGeometry()->GetNode("alice");
-
-  // T0 define the different volumes
-  new TRotMatrix("rotx999","rot999",  90,0,90,90,180,0);
-
-  new TTUBE("S_0ST1","T0  volume 1","void",5.,10.7,5.3);
-  top->cd();
-  node = new TNode("0ST1","0ST01","S_0ST1",0,0,-69.7,"");
-  node->SetLineColor(kColorT0);
-  fNodes->Add(node);
-
-  new TTUBE("S_0ST2","T0 volume 2","void",5.,10.7,5.3);
-  top->cd();
-  node = new TNode("0ST2","0ST2","S_0ST2",0,0,350,"rotx999");
-  node->SetLineColor(kColorT0);
-  fNodes->Add(node);
-}
-//_____________________________________________________________________________
-Int_t AliT0::DistanceToPrimitive(Int_t /*px*/, Int_t /*py*/)
-{
-  //
-  // Calculate the distance from the mouse to the T0 on the screen
-  // Dummy routine
-  //
-  return 9999;
-}
 //-------------------------------------------------------------------------
 void AliT0::Init()
 {
@@ -228,12 +179,15 @@ void AliT0::MakeBranch(Option_t* option)
   //
   //    R         Make a branch of  AliT0RecPoints
   //
-  char branchname[20];
-  sprintf(branchname,"%s",GetName());
+  //  char branchname[20];
+  // sprintf(branchname,"%s",GetName());
+  //  strncpy(branchname, GetName(), 20);
+  TString branchname = Form("%s", GetName());
 
   const char *cH = strstr(option,"H");
   const char *cD = strstr(option,"D");
   const char *cR = strstr(option,"R");
+  const char *cS = strstr(option,"S");
 
     if (cH && fLoader->TreeH())
   {
@@ -247,14 +201,21 @@ void AliT0::MakeBranch(Option_t* option)
       if (fDigits == 0x0) fDigits  = new AliT0digit();
       //     MakeBranchInTree(fLoader->TreeD(), branchname,
       //                      &fDigits, 405, 0);
-      fLoader->TreeD()->Branch(branchname,"AliT0digit",&fDigits,405,1);
+      fLoader->TreeD()->Branch(branchname.Data(),"AliT0digit",&fDigits);
       //   fLoader->TreeD()->Print();
     } 
   if (cR && fLoader->TreeR())
     {
       if (fRecPoints == 0x0) fRecPoints  = new AliT0RecPoint();
-      MakeBranchInTree(fLoader->TreeR(), branchname,
-                      &fRecPoints, 405, 0);
+      MakeBranchInTree(fLoader->TreeR(), branchname, &fRecPoints);
+    } 
+  if (cS && fLoader->TreeS())
+    {
+      if (fDigits == 0x0) fDigits  = new AliT0digit();
+      //     MakeBranchInTree(fLoader->TreeD(), branchname,
+      //                      &fDigits, 405, 0);
+      fLoader->TreeS()->Branch(branchname,"AliT0digit",&fDigits);
+      //   fLoader->TreeD()->Print();
     } 
   
 }    
@@ -262,6 +223,9 @@ void AliT0::MakeBranch(Option_t* option)
 //_____________________________________________________________________________
 void AliT0::ResetHits()
 {
+  //
+  //reset hits
+  //
   AliDetector::ResetHits();
   
 }
@@ -278,8 +242,7 @@ void AliT0::ResetDigits()
 void AliT0::SetTreeAddress()
 {
 
-  TTree    *treeH;
-  treeH = TreeH();
+  TTree    *treeH = fLoader->TreeH();
   
   if (treeH)
     {
@@ -300,6 +263,13 @@ void AliT0::SetTreeAddress()
     TBranch* branch = treeR->GetBranch ("T0");
     if (branch) branch->SetAddress(&fRecPoints);
   }
+  // SDigitizer for Federico
+  TTree *treeS = fLoader->TreeS();
+  if (treeS) {
+    if (fDigits == 0x0)  fDigits  = new AliT0digit();
+    TBranch* branch = treeS->GetBranch ("T0");
+    if (branch) branch->SetAddress(&fDigits);
+  }
  
 }
 
@@ -311,11 +281,13 @@ void AliT0::MakeBranchInTreeD(TTree *treeD, const char *file)
     // Create TreeD branches for the FMD
     //
     const Int_t kBufferSize = 4000;
-    char branchname[20];
-    sprintf(branchname,"%s",GetName());
+    //   char branchname[20];
+    // strncpy(branchname, GetName(), 20);
+    TString branchname = Form("%s", GetName());
+ //   sprintf(branchname,"%s",GetName());
     if(treeD)
      {
-       MakeBranchInTree(treeD,  branchname,&fDigits, kBufferSize, file);
+       MakeBranchInTree(treeD,  branchname.Data(),&fDigits, kBufferSize, file);
      }
 }
 
@@ -379,8 +351,8 @@ void AliT0::Raw2Digits(AliRawReader *rawReader,TTree* digitsTree)
    }
 
 
-   AliT0digit* fDigits = new AliT0digit();
-   digitsTree->Branch("T0","AliT0digit",&fDigits,405,1);
+   fDigits = new AliT0digit();
+   digitsTree->Branch("T0","AliT0digit",&fDigits);
    
    
    TArrayI *timeLED = new TArrayI(24);