]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ACORDE/AliACORDE.cxx
AliDecayer realisation for the EvtGen code and EvtGen itself.
[u/mrichter/AliRoot.git] / ACORDE / AliACORDE.cxx
index 68b07f7de796d5053605fbd8a80ee0d6a8419123..ae22d935c8c4045a51a9e819087d9feff1690658 100644 (file)
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <TClonesArray.h>
+#include <TGeoGlobalMagField.h>
+#include <TGeoManager.h>
+#include <TStopwatch.h>
 #include <TTree.h>
 #include <TVirtualMC.h>
-#include <TGeoManager.h>
 
 #include "AliACORDE.h"
 #include "AliMagF.h"
 #include "AliRun.h"
 #include "AliACORDERawData.h"
+#include "AliACORDERawStream.h"
 
 ClassImp(AliACORDE)
 
@@ -53,7 +56,7 @@ ClassImp(AliACORDE)
 AliACORDE::AliACORDE()
   : AliDetector(),
     fCreateCavern(0),
-    fITSGeometry(0)
+    f4CentralModulesGeometry(0)
 {
   //
   // Default constructor
@@ -64,7 +67,7 @@ AliACORDE::AliACORDE()
 AliACORDE::AliACORDE(const char *name, const char *title)
   : AliDetector(name, title),
     fCreateCavern(kFALSE),
-    fITSGeometry(kTRUE)
+    f4CentralModulesGeometry(kTRUE)
 
 {
   //
@@ -83,8 +86,8 @@ AliACORDE::~AliACORDE()
 void AliACORDE::CreateMaterials()
 {
   // Magnatic field inside the pit
-  Int_t   isxfld = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
   //Magnetic field above the Magnet.
   Int_t xfield = 0;   // no Magnetic field.
@@ -279,28 +282,60 @@ void AliACORDE::Digits2Raw()
 
   // 4. Write raw data
   AliACORDERawData rawdata;
-  rawdata.WriteACORDERawData(Modules);
+  rawdata.WriteACORDERawData(Modules,(ndig > 1));
 }
 
 //_____________________________________________________________________________
-void AliACORDE::AddAlignableVolumes() const
+Bool_t AliACORDE::Raw2SDigits(AliRawReader* rawReader)
 {
   //
-  // Create entries for alignable volumes associating the symbolic volume
-  // name with the corresponding volume path. Needs to be syncronized with
-  // eventual changes in the geometry.
-  // 
-  TString vpstr1 = "ALIC_1/ACORDE1_";
-  TString snstr1="ACORDE/Array";
-  TString volpath, symname;
-  
-  for(Int_t cnt=1; cnt<=3; cnt++){
-    volpath = vpstr1;
-    volpath += cnt;
-    symname = snstr1;
-    symname += cnt;
-    if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data()))
-      AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", symname.Data(),volpath.Data()));
+  // Reads the raw data stream and exracts the digits
+  //
+  // Input:
+  //         rawReader : pointer to the current AliRawReader
+  // Output:
+  //
+  // Created:      31 Jan 2008  Mario Sitta
+  //
+  TStopwatch timer;
+  timer.Start();
+
+  if(!fLoader) {
+    AliError("no ACORDE loader found");
+    return kFALSE;
   }
 
+  TTree* treeD  = fLoader->TreeD();
+  if(!treeD) {
+      fLoader->MakeTree("D");
+      treeD = fLoader->TreeD();
+  }
+        
+  AliACORDEdigit  digit;
+  AliACORDEdigit* pdigit = &digit;
+  const Int_t kBufferSize = 4000;
+   
+  treeD->Branch("ACORDE", "AliACORDEdigit",  &pdigit, kBufferSize);
+
+  //  rawReader->Reset();
+  AliACORDERawStream* rawStream  = new AliACORDERawStream(rawReader);    
+     
+  if (!rawStream->Next()) return kFALSE; // No ACORDE data found
+  /*  
+  for(Int_t i=0; i<64; i++) {
+      new(pdigit) AliACORDEdigit(i, (Int_t)rawStream->GetADC(i), (Int_t)rawStream->GetTime(i)); 
+      treeD->Fill();
+  }
+  */ 
+  fLoader->WriteDigits("OVERWRITE");
+  fLoader->UnloadDigits();     
+       
+  delete rawStream;
+
+  timer.Stop();
+  timer.Print();
+
+  return kTRUE;
 }
+
+//_____________________________________________________________________________