]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - BCM/AliBCM.cxx
call ProcessTriggerAliases only after BeginSlave or before raw chain loop
[u/mrichter/AliRoot.git] / BCM / AliBCM.cxx
index 4bf2ef112268bf589cc11eeab6799fd794154079..63dc63afaf0477920877dab6f4edde7606ce547b 100644 (file)
 //  andreas.morsch@cern.ch                                                   // 
 ///////////////////////////////////////////////////////////////////////////////
  
-#include <TVirtualMC.h>
 #include <TClonesArray.h>
+#include <TGeoCompositeShape.h>
+#include <TGeoGlobalMagField.h>
+#include <TGeoManager.h>
 #include <TGeoMaterial.h>
-#include <TGeoMedium.h>
-#include <TGeoVolume.h>
 #include <TGeoMatrix.h>
+#include <TGeoMedium.h>
 #include <TGeoPgon.h>
+#include <TGeoVolume.h>
 #include <TGeoXtru.h>
-#include <TGeoCompositeShape.h>
-#include <TGeoManager.h>
+#include <TVirtualMC.h>
 
 #include "AliBCM.h"
 #include "AliBCMHit.h"
+#include "AliBCMLoader.h"
 #include "AliMagF.h"
 #include "AliRun.h"
 #include "AliMC.h"
@@ -76,31 +78,32 @@ void AliBCM::StepManager()
 //    
 
     static Float_t edepT;    
-    static Double_t xh[3] = {0., 0., 0.};
+    static Double_t xh[4] = {0., 0., 0., 0.};
     Float_t edep = 0.;
     Int_t   copy = -1; 
     
     
-    if (gMC->TrackCharge() && 
-       gMC->CurrentVolID(copy) == fVolId) {
+    if (TVirtualMC::GetMC()->TrackCharge() && 
+       TVirtualMC::GetMC()->CurrentVolID(copy) == fVolId) {
        // Charged particle inside sensitive volume
        //
        // Entering
-       if (gMC->IsTrackEntering()) {
+       if (TVirtualMC::GetMC()->IsTrackEntering()) {
            edepT = 0.;
-           gMC->TrackPosition(xh[0],xh[1],xh[2]); 
+           TVirtualMC::GetMC()->TrackPosition(xh[0],xh[1],xh[2]);
+           xh[3] = TVirtualMC::GetMC()->TrackTime();
        }
        
        //
        // Any step
-       if ((edep = gMC->Edep()) > 0.) {
+       if ((edep = TVirtualMC::GetMC()->Edep()) > 0.) {
            Double_t x[3];   
-           gMC->TrackPosition(x[0],x[1],x[2]); 
+           TVirtualMC::GetMC()->TrackPosition(x[0],x[1],x[2]); 
            edepT += edep;
        }
        //
        // Exiting 
-       if(gMC->IsTrackExiting()||gMC->IsTrackStop()||gMC->IsTrackDisappeared())
+       if(TVirtualMC::GetMC()->IsTrackExiting()||TVirtualMC::GetMC()->IsTrackStop()||TVirtualMC::GetMC()->IsTrackDisappeared())
        {
            Int_t track = gAlice->GetMCApp()->GetCurrentTrackNumber();
            TClonesArray &lhits = *fHits;
@@ -167,8 +170,8 @@ void AliBCM::CreateMaterials()
     Float_t tmaxfd = -20. ;  // Maximum angle due to field deflection 
     Float_t deemax = -.01;   // Maximum fractional energy loss, DLS 
     Float_t stmin  = -.8;
-    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();
 
     AliMaterial(1, "PCD", 12.011, 6., rho, radl, absl);
     //
@@ -195,7 +198,7 @@ void AliBCM::Init()
 
     //
     // Here the BCM initialisation code (if any!)
-    fVolId =  gMC->VolId("BCMpcd");
+    fVolId =  TVirtualMC::GetMC()->VolId("BCMpcd");
 }
 
 void AliBCM::MakeBranch(Option_t* option)
@@ -208,10 +211,10 @@ void AliBCM::MakeBranch(Option_t* option)
 //  const char *cR = strstr(option,"R");
 //  const char *cS = strstr(option,"S");
 
-  if(cH && TreeH() && (fHits == 0x0)){
+  if(cH && fLoader->TreeH() && (fHits == 0x0)){
       fHits  = new TClonesArray("AliBCMHit");
       fNhits = 0;    
-      MakeBranchInTree(TreeH(), "BCM" ,&fHits ,kBufSize, 0);
+      MakeBranchInTree(fLoader->TreeH(), "BCM" ,&fHits ,kBufSize, 0);
   }
   AliDetector::MakeBranch(option);
 }
@@ -220,7 +223,17 @@ void AliBCM::SetTreeAddress()
 {
   // Set branch address
 
-    if (TreeH() && fHits==0x0)
+    if (fLoader->TreeH() && fHits==0x0)
        fHits   = new TClonesArray("AliBCMHit",  4000);
     AliDetector::SetTreeAddress();
 }
+
+//_____________________________________________________________________________
+AliLoader* AliBCM::MakeLoader(const char* topfoldername)
+{ 
+  //
+  // Builds BCM getter (AliLoader type)
+  AliDebug(1,Form("Creating AliBCMLoader, Top folder is %s ",topfoldername));
+  fLoader = new AliBCMLoader(GetName(),topfoldername);
+  return fLoader;
+}