]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONChamber.cxx
Merge MC labels for 4 neighbour bins in the Hough space in order to reduce the size...
[u/mrichter/AliRoot.git] / MUON / AliMUONChamber.cxx
index 06a6f01116217b929d9143e8666854f2b02c250e..f50e80bfe6db72919470dcfdde8ad66adf6e4cbc 100644 (file)
@@ -17,6 +17,7 @@
 
 // --- MUON includes ---
 #include "AliMUONChamber.h"
+#include "AliMUONChamberGeometry.h"
 
 // --- ROOT includes ---
 
@@ -32,6 +33,8 @@ ClassImp(AliMUONChamber)
     fResponse=0;
     fnsec=1;
     fReconstruction=0;
+    fGeometry = 0;
+    
     fId=0;
     // to avoid mistakes if ChargeCorrelInit is not called
     fCurrentCorrel =1;
@@ -47,6 +50,7 @@ ClassImp(AliMUONChamber)
     fnsec=1;
     fReconstruction=0;
     fId=id;
+    fGeometry = new AliMUONChamberGeometry(fId);
     // to avoid mistakes if ChargeCorrelInit is not called
     fCurrentCorrel =1;
 }
@@ -58,14 +62,23 @@ AliMUONChamber::~AliMUONChamber()
     fSegmentation->Delete();
     delete fSegmentation;
   }
+  delete fGeometry;
+}
+
+AliMUONChamber::AliMUONChamber(const AliMUONChamber& rChamber):TObject(rChamber)
+{
+ // Dummy copy constructor
+     ;
 }
 
-// AliMUONChamber::AliMUONChamber(const AliMUONChamber& rChamber):TObject(const AliMUONChamber& rChamber)
-//  {
-//  // Dummy copy constructor
-//      ;
-// // }
 
+Bool_t  AliMUONChamber::IsSensId(Int_t volId) const 
+{
+// Returns true if the volume specified by volId is in the list
+// of sesitive volumes for this chamber
+
+  return fGeometry->IsSensitiveVolume(volId);
+}  
 
 void AliMUONChamber::Init()
 {
@@ -149,12 +162,11 @@ void AliMUONChamber::DisIntegration(Float_t eloss, Float_t /*tof*/,
     //
     // Loop Over Pads
     
-    Float_t qcheck=0, qp;
+    Float_t qp; 
     nnew=0;
     
     // Cathode plane loop
     for (Int_t i=1; i<=fnsec; i++) {
-       qcheck=0;
        Float_t qcath = qtot * (i==1? fCurrentCorrel : 1/fCurrentCorrel);
        AliSegmentation * segmentation=
       //PH         (AliSegmentation *) (*fSegmentation)[i-1];
@@ -167,10 +179,16 @@ void AliMUONChamber::DisIntegration(Float_t eloss, Float_t /*tof*/,
            qp=TMath::Abs(qp);
 //
 //
-           if (qp > 1.e-4) {
-               qcheck+=qp*qcath;
-           //
-           // --- store signal information
+           if (qp > 1.e-4) 
+            {
+               if (nnew >= 500) // Perform a bounds check on nnew since it is assumed
+                                // newclust only contains 500 elements.
+               {
+                       Error("DisIntegration", "Limit of 500 pad responses reached.");
+                       return;
+               };
+               //
+               // --- store signal information
                newclust[0][nnew]=qcath;                     // total charge
                newclust[1][nnew]=segmentation->Ix();       // ix-position of pad
                newclust[2][nnew]=segmentation->Iy();       // iy-position of pad
@@ -178,7 +196,6 @@ void AliMUONChamber::DisIntegration(Float_t eloss, Float_t /*tof*/,
                newclust[4][nnew]=segmentation->ISector();  // sector id
                newclust[5][nnew]=(Float_t) i;              // counter
                nnew++;
-//             if (i==2) printf("\n i, nnew, q %d %d %f", i, nnew, qp*qcath);
                
            }
        } // Pad loop