AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jun 2000 12:34:09 +0000 (12:34 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jun 2000 12:34:09 +0000 (12:34 +0000)
it usable with any other geometry class. The link to the object to which it belongs is
established via an index. This assumes that there exists a global geometry manager
from which the pointer to the parent object can be obtained (in our case gAlice).

22 files changed:
MUON/AliMUON.cxx
MUON/AliMUONChamber.cxx
MUON/AliMUONChamber.h
MUON/AliMUONChamberTrigger.cxx
MUON/AliMUONChamberTrigger.h
MUON/AliMUONSegmentation.h
MUON/AliMUONSegmentationTrigger.cxx
MUON/AliMUONSegmentationTrigger.h
MUON/AliMUONSegmentationTriggerX.cxx
MUON/AliMUONSegmentationTriggerX.h
MUON/AliMUONSegmentationTriggerY.cxx
MUON/AliMUONSegmentationTriggerY.h
MUON/AliMUONSegmentationV0.cxx
MUON/AliMUONSegmentationV0.h
MUON/AliMUONSegmentationV01.cxx
MUON/AliMUONSegmentationV01.h
MUON/AliMUONSegmentationV04.cxx
MUON/AliMUONSegmentationV04.h
MUON/AliMUONSegmentationV05.cxx
MUON/AliMUONSegmentationV05.h
MUON/AliMUONSegmentationV1.cxx
MUON/AliMUONSegmentationV1.h

index fdcefc7cf4cc440e58e11825170c4d4967580ebf..6db0605330d69890494d9f7cfc7f170f93ee46ba 100644 (file)
  **************************************************************************/
 /*
 $Log$
+Revision 1.24  2000/06/28 15:16:35  morsch
+(1) Client code adapted to new method signatures in AliMUONSegmentation (see comments there)
+to allow development of slat-muon chamber simulation and reconstruction code in the MUON
+framework. The changes should have no side effects (mostly dummy arguments).
+(2) Hit disintegration uses 3-dim hit coordinates to allow simulation
+of chambers with overlapping modules (MakePadHits, Disintegration).
+
 Revision 1.23  2000/06/28 12:19:17  morsch
 More consequent seperation of global input data services (AliMUONClusterInput singleton) and the
 cluster and hit reconstruction algorithms in AliMUONClusterFinderVS.
@@ -247,9 +254,9 @@ AliMUON::AliMUON(const char *name, const char *title)
            ch = 2 * st + stCH;
 //
            if (ch < AliMUONConstants::NTrackingCh()) {
-               (*fChambers)[ch] = new AliMUONChamber();
+               (*fChambers)[ch] = new AliMUONChamber(ch);
            } else {
-               (*fChambers)[ch] = new AliMUONChamberTrigger();
+               (*fChambers)[ch] = new AliMUONChamberTrigger(ch);
            }
            
            AliMUONChamber* chamber = (AliMUONChamber*) (*fChambers)[ch];
index 45a4027e3de9f9ef7b772e151079842ea15d0793..9a18dfed970ec96b476c01707d5d35cb4c5be76d 100644 (file)
  **************************************************************************/
 /*
 $Log$
+Revision 1.3  2000/06/28 15:16:35  morsch
+(1) Client code adapted to new method signatures in AliMUONSegmentation (see comments there)
+to allow development of slat-muon chamber simulation and reconstruction code in the MUON
+framework. The changes should have no side effects (mostly dummy arguments).
+(2) Hit disintegration uses 3-dim hit coordinates to allow simulation
+of chambers with overlapping modules (MakePadHits, Disintegration).
+
 Revision 1.2  2000/06/15 07:58:48  morsch
 Code from MUON-dev joined
 
@@ -34,18 +41,33 @@ Log messages included
 #include "TMath.h"
 ClassImp(AliMUONChamber)       
 
-    AliMUONChamber::AliMUONChamber() 
+    AliMUONChamber::AliMUONChamber()
+{
+// Default constructor
+    fSegmentation = new TObjArray(2);
+    (*fSegmentation)[0] = 0;
+    (*fSegmentation)[1] = 0;    
+    fResponse=0;
+    fnsec=1;
+    fReconstruction=0;
+    fId=0;
+}
+
+    AliMUONChamber::AliMUONChamber(Int_t id) 
 {
+// Construtor with chamber id 
     fSegmentation = new TObjArray(2);
     (*fSegmentation)[0] = 0;
     (*fSegmentation)[1] = 0;    
     fResponse=0;
     fnsec=1;
     fReconstruction=0;
+    fId=id;
 }
 
 AliMUONChamber::~AliMUONChamber() 
 {
+// Destructor
     if (fSegmentation) delete fSegmentation;
 }
 
@@ -62,11 +84,11 @@ void AliMUONChamber::Init()
 //
 // ... for chamber segmentation
     if ((*fSegmentation)[0]) 
-    ((AliMUONSegmentation *) (*fSegmentation)[0])->Init(this);
+    ((AliMUONSegmentation *) (*fSegmentation)[0])->Init(fId);
 
     if (fnsec==2) {
        if ((*fSegmentation)[1])
-       ((AliMUONSegmentation *) (*fSegmentation)[1])->Init(this);
+       ((AliMUONSegmentation *) (*fSegmentation)[1])->Init(fId);
     }
 }
 
index d8af746abe2a0e583c3d4dba7dcbc69edd078052..745d73ac3a636cef9c0c0e3621434136e8c49f8d 100644 (file)
@@ -18,6 +18,7 @@ public TObject
 {
  public:
     AliMUONChamber();
+    AliMUONChamber(Int_t id);
     AliMUONChamber(const AliMUONChamber & rChamber);
     virtual ~AliMUONChamber();
     
@@ -110,7 +111,7 @@ public TObject
   virtual AliMUONChamber& operator =(const AliMUONChamber& rhs);
   
  protected:
-
+  Int_t   fId;   // chamber number
   Float_t fdGas; // half gaz gap
   Float_t fdAlu; // half Alu width  
   Int_t   fGid;  // GEANT volume if for sensitive volume of this chamber
index c68ba35d0a71fb6e5ae9c06f74c34c43d45c2a39..4643c030a404c3ba371b668a95da38b2a00af032 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.4  2000/06/29 06:52:02  pcrochet
+pow changed to TMath::Power
+
 Revision 1.3  2000/06/28 15:16:35  morsch
 (1) Client code adapted to new method signatures in AliMUONSegmentation (see comments there)
 to allow development of slat-muon chamber simulation and reconstruction code in the MUON
@@ -47,9 +50,16 @@ Draft version
 ClassImp(AliMUONChamberTrigger)
 
 //-------------------------------------------
-AliMUONChamberTrigger::AliMUONChamberTrigger() : AliMUONChamber()
+
+    AliMUONChamberTrigger::AliMUONChamberTrigger()
+{
+// Default constructor
+}
+
+
+AliMUONChamberTrigger::AliMUONChamberTrigger(Int_t id) : AliMUONChamber(id)
 {
-// Default Constructor
+// Constructor using chamber id
 }
 
 //-------------------------------------------
index c5be7202509a2d51ede5770a5a5d79a96aab5b4a..8391deb6dc1c562e4d775ffa06cab2b3bff4f7b9 100644 (file)
@@ -17,6 +17,7 @@ class AliMUONChamberTrigger:
 public AliMUONChamber {
  public:
     AliMUONChamberTrigger();
+    AliMUONChamberTrigger(Int_t id);
     virtual ~AliMUONChamberTrigger(){}
 // Cluster formation method (charge disintegration)
     
index cf193878b0e32ded0c7d16987921caa20b169e27..0b254d32818edd1d8c0726d1280109c2574cdb71 100644 (file)
@@ -8,8 +8,6 @@
 #include "TObject.h"
 
 class TF1;
-class AliMUONChamber;
-class AliMUONRecCluster;
 
 //----------------------------------------------
 //
@@ -34,7 +32,7 @@ public TObject {
     virtual void    GetPadCxy(Int_t  ix, Int_t  iy, Float_t &x, Float_t  &y, Float_t &z) =0;
     //
     // Initialisation
-    virtual void Init(AliMUONChamber*)                           =0;
+    virtual void Init(Int_t chamber)                             =0;
     //
     // Get member data
     //
index 60a10b9c42b887b82996819b5635a88ad17e78da..6d02a9e85adff16daf71a30865a89c642dbda5d4 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.3  2000/06/26 10:00:14  pcrochet
+global variables removed, problem with HP compiler solved (PH)
+
 Revision 1.2  2000/06/15 07:58:48  morsch
 Code from MUON-dev joined
 
@@ -41,6 +44,8 @@ Draft version from P. Crochet
 
 #include "AliMUONSegmentationTrigger.h"
 #include "AliMUONTriggerConstants.h"
+#include "AliRun.h"
+#include "AliMUON.h"
 #include <TMath.h>
 #include <TRandom.h>
 #include <TArc.h>
@@ -50,12 +55,15 @@ Draft version from P. Crochet
 ClassImp(AliMUONSegmentationTrigger)
 
 //------------------------------------------------------------------
-void AliMUONSegmentationTrigger::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationTrigger::Init(Int_t chamber)
 {
   // initialize Module geometry
   cout << "Initialize Trigger Chamber Module Geometry " << "\n";    
 
-  Float_t zPos=Chamber->Z();
+  AliMUON *pMUON  = (AliMUON *) gAlice->GetModule("MUON");
+  AliMUONChamber* iChamber=&(pMUON->Chamber(chamber));
+
+  Float_t zPos=iChamber->Z();
   Float_t z1Pos=1603.5;
   fZscale = zPos/z1Pos;
 
index 83013569258b8840bea19f1b435e3a608db0998f..318310c85c29141400c91584880cd8d34853143d 100644 (file)
@@ -17,7 +17,7 @@ public AliMUONSegmentationV0 {
  public:
   AliMUONSegmentationTrigger(){};
   virtual ~AliMUONSegmentationTrigger(){}  
-  virtual void Init(AliMUONChamber* chamber);         // Initialization
+  virtual void Init(Int_t chamber);         // Initialization
   Int_t ModuleNumber(Int_t imodule);  // returns module number of ModuleId
   // Set pad position -> in SegRes X & Y
   //       virtual void     SetPad(Int_t, Int_t);
index 7daba873354bf56e9a36854e581e1995099943b0..3cd4a4833166cb5f1d9bb29902eeaecf5461f4d3 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.3  2000/06/26 10:01:26  pcrochet
+global variables removed
+
 Revision 1.2  2000/06/15 07:58:48  morsch
 Code from MUON-dev joined
 
@@ -51,11 +54,11 @@ Draft version from P. Crochet
 ClassImp(AliMUONSegmentationTriggerX)
 
 //------------------------------------------------------------------
-void AliMUONSegmentationTriggerX::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationTriggerX::Init(Int_t chamber)
 {
 // intialize X segmentation 
   cout << "Initialize Trigger Chamber Geometry X " << "\n";    
-  AliMUONSegmentationTrigger::Init(Chamber);
+  AliMUONSegmentationTrigger::Init(chamber);
 
 // calculate x & y position of X strips
   Int_t nModule=AliMUONTriggerConstants::Nmodule();
index 23af173daacf8f77f8038fc978736e3b919289ff..5158668623a78255cddcc339e10aeb5f7744bb67 100644 (file)
@@ -54,7 +54,7 @@ public AliMUONSegmentationTrigger {
   
   //
   // Initialisation
-  virtual void Init(AliMUONChamber* chamber);    
+  virtual void Init(Int_t chamber);    
   
   ClassDef(AliMUONSegmentationTriggerX,1) //Segmentation class for trigger X
     
index b8ad1db17bc84a4378e1b399c39b55e5497ca599..e046e01542fccf4a75d5af0cd2da08d544ddfce9 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.3  2000/06/26 10:01:26  pcrochet
+global variables removed
+
 Revision 1.2  2000/06/15 07:58:48  morsch
 Code from MUON-dev joined
 
@@ -50,11 +53,11 @@ Draft version from P. Crochet
 ClassImp(AliMUONSegmentationTriggerY)
 
 //------------------------------------------------------------------
-void AliMUONSegmentationTriggerY::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationTriggerY::Init(Int_t chamber)
 {
 // intialize Y segmentation 
   cout << "Initialize Trigger Chamber Geometry Y " << "\n";    
-  AliMUONSegmentationTrigger::Init(Chamber);
+  AliMUONSegmentationTrigger::Init(chamber);
     
 // calculate x & y position of Y strips
   Int_t nModule=AliMUONTriggerConstants::Nmodule();  
index 1fbfae1ae1ffb9d881d3d44ae40468ae03a9def9..c87cbb9fe4642db7a972ef93b1348ea695ae7a6a 100644 (file)
@@ -55,7 +55,7 @@ public AliMUONSegmentationTrigger {
     (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[2], Int_t Ylist[2]);
   //
   // Initialisation
-  virtual void Init(AliMUONChamber* chamber);    
+  virtual void Init(Int_t chamber);    
   
   ClassDef(AliMUONSegmentationTriggerY,1) //Segmentation class for trigger X
     protected:    
index 38924ee6c8fbb4cdee3129e4eb0dec7978a85605..fa9ae4b216cd39696194e074e3b549fd1b380978 100644 (file)
@@ -14,6 +14,9 @@
  **************************************************************************/
 /*
 $Log$
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.2  2000/06/12 07:57:23  morsch
 include TMath.h
 
@@ -26,6 +29,8 @@ AliMUONSegmentationV0 code  from  AliMUONSegResV0.cxx
 #include "TArc.h"
 #include "TMath.h"
 #include "AliMUONChamber.h"
+#include "AliRun.h"
+#include "AliMUON.h"
 
 ClassImp(AliMUONSegmentationV0)
     AliMUONSegmentationV0::AliMUONSegmentationV0(const AliMUONSegmentationV0& segmentation)
@@ -33,17 +38,20 @@ ClassImp(AliMUONSegmentationV0)
 // Dummy copy constructor
 }
 
-    void AliMUONSegmentationV0::Init(AliMUONChamber* Chamber)
+    void AliMUONSegmentationV0::Init(Int_t  chamber)
 {
 //  Initialises member data of the segmentation from geometry data 
 //  owned by Chamber
 //
+    AliMUON *pMUON  = (AliMUON *) gAlice->GetModule("MUON");
+    AliMUONChamber* iChamber=&(pMUON->Chamber(chamber));
+    
 //  Initialise maximum number of pads in x ans y
-    fNpx=(Int_t) (Chamber->ROuter()/fDpx+1);
-    fNpy=(Int_t) (Chamber->ROuter()/fDpy+1);
+    fNpx=(Int_t) (iChamber->ROuter()/fDpx+1);
+    fNpy=(Int_t) (iChamber->ROuter()/fDpy+1);
 //  Initialize inner and outer radius of the sensitive region     
-    fRmin=Chamber->RInner();
-    fRmax=Chamber->ROuter();    
+    fRmin=iChamber->RInner();
+    fRmax=iChamber->ROuter();    
     fCorr=0;
     
 }
index 86c40e7cad6ae586973c324a8d1fa4bcaa075e8f..fd4800ce4b44eec3cdc82981665994912513e05b 100644 (file)
@@ -7,7 +7,6 @@
 
 #include "AliMUONSegmentation.h"
 
-class AliMUONChamber;
 //----------------------------------------------
 //
 // Chamber segmentation for homogeneously segmented circular chamber
@@ -39,7 +38,7 @@ public AliMUONSegmentation {
        {z=0; GetPadCxy(ix, iy, x , y);}
     //
     // Initialisation
-    virtual void Init(AliMUONChamber* chamber);
+    virtual void Init(Int_t chamber);
     //
     // Get member data
     //
index 4df8c6d4129f05cbdf405b73a0edbcdee6f81559..7bbb39a22293c7d790fd2b829317586430312476 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.1  2000/06/09 21:37:30  morsch
 AliMUONSegmentationV01 code  from  AliMUONSegResV01.cxx
 
@@ -99,7 +102,7 @@ void AliMUONSegmentationV01::SetPadDivision(Int_t ndiv[4])
 }
 
 
-void AliMUONSegmentationV01::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationV01::Init(Int_t chamber)
 {
 //
 //  Fill the arrays fCx (x-contour) and fNpxS (ix-contour) for each sector
index 1825c85223d8fa33cddccd3995930eb81a1d6fe8..486ed81c1c71ba81267523a0abba80ab78dcc677 100644 (file)
@@ -46,7 +46,7 @@ public AliMUONSegmentationV0 {
        {z=0; GetPadCxy(ix, iy, x , y);}
     //
     // Initialisation
-    virtual void Init(AliMUONChamber* chamber);
+    virtual void Init(Int_t chamber);
     //
     // Get member data
     //
index 77431526f1bf175cb0592ba57945142ad879bae8..e05ae7a72432c1f748f7573da1944dde4564a958 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.1  2000/06/09 21:38:15  morsch
 AliMUONSegmentationV04 code  from  AliMUONSegResV04.cxx
 
@@ -32,7 +35,7 @@ AliMUONSegmentationV04 code  from  AliMUONSegResV04.cxx
 ClassImp(AliMUONSegmentationV04)
 
 
-void AliMUONSegmentationV04::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationV04::Init(Int_t chamber)
 {
     printf("\n Initialise segmentation v04 \n");
 //
index a2379b742fdcd00ea08d6562eb14ca37590f78e5..bd026a8d1a967356b17c78a192c53188b9aaa5b3 100644 (file)
@@ -17,7 +17,7 @@ public AliMUONSegmentationV01 {
     AliMUONSegmentationV04(){}
     virtual ~AliMUONSegmentationV04(){}
     // Initialisation
-    virtual void Init(AliMUONChamber* chamber);
+    virtual void Init(Int_t chamber);
     // Test points for auto calibration
     void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
     ClassDef(AliMUONSegmentationV04,1) // Segmentation zones are rectangular modules
index fedb24408a8c3211d66265c81920991206785a1b..387d078296c2262320a410514052543d97c13a4a 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.1  2000/06/09 21:38:46  morsch
 AliMUONSegmentationV05 code  from  AliMUONSegResV05.cxx
 
@@ -31,7 +34,7 @@ AliMUONSegmentationV05 code  from  AliMUONSegResV05.cxx
 ClassImp(AliMUONSegmentationV05)
 
 
-void AliMUONSegmentationV05::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationV05::Init(Int_t chamber)
 {
     printf("\n Initialise segmentation v05 \n");
 //
index 6623f30b595e3b3f043549b8bbb3c15f4c1b5a38..a737c5a47f64677268ad99499dee63835c1afa62 100644 (file)
@@ -17,7 +17,7 @@ public AliMUONSegmentationV02 {
     AliMUONSegmentationV05(){}
     virtual ~AliMUONSegmentationV05(){}
     // Initialisation
-    virtual void Init(AliMUONChamber* chamber);
+    virtual void Init(Int_t chamber);
     // Test points for auto calibration
     void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
     ClassDef(AliMUONSegmentationV05,1)// Segmentation zones are rectangular modules 
index f9d08d492f84059b0ffd1ac3b632215aa5913365..3887db02cfeb71e3b74b5612fb3c78f186933e76 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.2  2000/06/12 07:57:43  morsch
 include TMath.cxx
 
@@ -31,6 +34,8 @@ AliMUONSegmentationV1 code  from  AliMUONSegResV1.cxx
 #include <TMath.h>
 #include "AliMUONChamber.h"
 #include "AliMUONSegmentationV1.h"
+#include "AliRun.h"
+#include "AliMUON.h"
 
 //___________________________________________
 ClassImp(AliMUONSegmentationV1)
@@ -54,14 +59,17 @@ AliMUONSegmentationV1::AliMUONSegmentationV1()
 }
 
 
-void AliMUONSegmentationV1::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationV1::Init(Int_t chamber)
 {
     // valid only for T5/6
     // beware : frMin is SENSITIVE radius by definition.
-    frSensMin2 = (Chamber->RInner())*(Chamber->RInner());
-    frSensMax2 = (Chamber->ROuter())*(Chamber->ROuter());
-    fNpx=(Int_t) (Chamber->ROuter()/fDpx) + 1;
-    fNpy=(Int_t) (Chamber->ROuter()/fDpy) + 1;
+    AliMUON *pMUON  = (AliMUON *) gAlice->GetModule("MUON");
+    AliMUONChamber* iChamber=&(pMUON->Chamber(chamber));
+
+    frSensMin2 = (iChamber->RInner())*(iChamber->RInner());
+    frSensMax2 = (iChamber->ROuter())*(iChamber->ROuter());
+    fNpx=(Int_t) (iChamber->ROuter()/fDpx) + 1;
+    fNpy=(Int_t) (iChamber->ROuter()/fDpy) + 1;
     //    fNwire=3;
     DefaultCut();
     fCorr=0;
index 4af987da79090f298afe1c1dbe2b7611155df0e3..92f1bbf2efc0ddd420e6e675df40359aa76a67ed 100644 (file)
@@ -34,7 +34,7 @@ public AliMUONSegmentation {
     virtual void DefaultCut(void);
     //
     // Initialisation
-    virtual void Init(AliMUONChamber* chamber);
+    virtual void Init(Int_t id);
     //
     // Get member data
     //