Add and fill regional trigger container (Christian)
authorpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Aug 2006 12:18:00 +0000 (12:18 +0000)
committerpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Aug 2006 12:18:00 +0000 (12:18 +0000)
MUON/AliMUONData.cxx
MUON/AliMUONData.h
MUON/AliMUONRegionalTrigger.cxx [new file with mode: 0644]
MUON/AliMUONRegionalTrigger.h [new file with mode: 0644]
MUON/AliMUONTriggerElectronics.cxx

index 665107c..996db06 100644 (file)
 
 #include "AliLog.h"
 #include "AliMUONConstants.h"
+#include "AliMUONHit.h"
 #include "AliMUONDigit.h"
 #include "AliMUONGlobalTrigger.h"
-#include "AliMUONHit.h"
 #include "AliMUONLocalTrigger.h"
+#include "AliMUONRegionalTrigger.h"
 #include "AliMUONRawCluster.h"
 #include "AliMUONTrack.h"
 #include "AliMUONTriggerTrack.h"
@@ -52,6 +53,7 @@ ClassImp(AliMUONData)
     fRawClusters(0x0),
     fGlobalTrigger(0x0),
     fLocalTrigger(0x0),
+    fRegionalTrigger(0x0),
     fRecTracks(0x0),
     fRecTriggerTracks(0x0),
     fNhits(0),
@@ -60,6 +62,7 @@ ClassImp(AliMUONData)
     fNrawclusters(0x0),
     fNglobaltrigger(0),
     fNlocaltrigger(0),
+    fNregionaltrigger(0),
     fNrectracks(0),
     fNrectriggertracks(0),
     fSplitLevel(0),
@@ -77,6 +80,7 @@ AliMUONData::AliMUONData(AliLoader * loader, const char* name, const char* title
     fRawClusters(0x0),
     fGlobalTrigger(0x0),
     fLocalTrigger(0x0),
+    fRegionalTrigger(0x0),
     fRecTracks(0x0),
     fRecTriggerTracks(0x0),
     fNhits(0),
@@ -85,6 +89,7 @@ AliMUONData::AliMUONData(AliLoader * loader, const char* name, const char* title
     fNrawclusters(0x0),
     fNglobaltrigger(0),
     fNlocaltrigger(0),
+    fNregionaltrigger(0),
     fNrectracks(0),
     fNrectriggertracks(0),
     fSplitLevel(0),
@@ -118,6 +123,10 @@ AliMUONData::~AliMUONData()
     fGlobalTrigger->Delete();
     delete fGlobalTrigger;
   }  
+  if (fRegionalTrigger){
+    fRegionalTrigger->Delete();
+    delete fRegionalTrigger;
+  }
   if (fLocalTrigger){
     fLocalTrigger->Delete();
     delete fLocalTrigger;
@@ -131,7 +140,38 @@ AliMUONData::~AliMUONData()
     delete fRecTriggerTracks;
   }
 }
+//____________________________________________________________________________
+void AliMUONData::AddHit(Int_t fIshunt, Int_t track, Int_t iChamber, 
+                        Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
+                        Float_t tof, Float_t momentum, Float_t theta, 
+                        Float_t phi, Float_t length, Float_t destep,
+                        Float_t Xref,Float_t Yref,Float_t Zref)
+{
+/// Add new hit to the hit list
+
+  TClonesArray &lhits = *fHits;
+  new(lhits[fNhits++]) AliMUONHit(fIshunt, track, iChamber, 
+                                 idpart, X, Y, Z, 
+                                 tof, momentum, theta, 
+                                 phi, length, destep,
+                                 Xref,Yref,Zref);
+}
+//____________________________________________________________________________
+void AliMUONData::AddHit2(Int_t fIshunt, Int_t track, Int_t detElemId, 
+                        Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
+                        Float_t tof, Float_t momentum, Float_t theta, 
+                        Float_t phi, Float_t length, Float_t destep,
+                        Float_t Xref,Float_t Yref,Float_t Zref)
+{
+ // Add new hit to the hit list
 
+  TClonesArray &lhits = *fHits;
+  new(lhits[fNhits++]) AliMUONHit(fIshunt, track, detElemId, 
+                                 idpart, X, Y, Z, 
+                                 tof, momentum, theta, 
+                                 phi, length, destep,
+                                 Xref,Yref,Zref, true);
+}
 //_____________________________________________________________________________
 void AliMUONData::AddDigit(Int_t id, Int_t *tracks, Int_t *charges, Int_t *digits)
 {
@@ -173,37 +213,13 @@ void AliMUONData::AddGlobalTrigger(const AliMUONGlobalTrigger& trigger )
   TClonesArray &globalTrigger = *fGlobalTrigger;
   new(globalTrigger[fNglobaltrigger++]) AliMUONGlobalTrigger(trigger);
 }
-//____________________________________________________________________________
-void AliMUONData::AddHit(Int_t fIshunt, Int_t track, Int_t iChamber, 
-                        Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
-                        Float_t tof, Float_t momentum, Float_t theta, 
-                        Float_t phi, Float_t length, Float_t destep,
-                        Float_t Xref,Float_t Yref,Float_t Zref)
-{
-/// Add new hit to the hit list
 
-  TClonesArray &lhits = *fHits;
-  new(lhits[fNhits++]) AliMUONHit(fIshunt, track, iChamber, 
-                                 idpart, X, Y, Z, 
-                                 tof, momentum, theta, 
-                                 phi, length, destep,
-                                 Xref,Yref,Zref);
-}
 //____________________________________________________________________________
-void AliMUONData::AddHit2(Int_t fIshunt, Int_t track, Int_t detElemId, 
-                        Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
-                        Float_t tof, Float_t momentum, Float_t theta, 
-                        Float_t phi, Float_t length, Float_t destep,
-                        Float_t Xref,Float_t Yref,Float_t Zref)
+void AliMUONData::AddRegionalTrigger(const  AliMUONRegionalTrigger& trigger)
 {
- // Add new hit to the hit list
-
-  TClonesArray &lhits = *fHits;
-  new(lhits[fNhits++]) AliMUONHit(fIshunt, track, detElemId, 
-                                 idpart, X, Y, Z, 
-                                 tof, momentum, theta, 
-                                 phi, length, destep,
-                                 Xref,Yref,Zref, true);
+/// add a MUON regional Trigger to the list
+  TClonesArray &regionalTrigger = *fRegionalTrigger;
+  new(regionalTrigger[fNregionaltrigger++]) AliMUONRegionalTrigger(trigger);
 }
 //____________________________________________________________________________
 void AliMUONData::AddLocalTrigger(const  AliMUONLocalTrigger& trigger)
@@ -213,6 +229,7 @@ void AliMUONData::AddLocalTrigger(const  AliMUONLocalTrigger& trigger)
   TClonesArray &localTrigger = *fLocalTrigger;
   new(localTrigger[fNlocaltrigger++]) AliMUONLocalTrigger(trigger);
 }
+
 //_____________________________________________________________________________
 void AliMUONData::AddRawCluster(Int_t id, const AliMUONRawCluster& c)
 {
@@ -419,9 +436,13 @@ void AliMUONData::Fill(Option_t* option)
         sprintf(branchname,"%sLocalTrigger",GetName());
         branch = TreeD()->GetBranch(branchname); 
         branch->Fill();
+       sprintf(branchname,"%sRegionalTrigger",GetName());
+        branch = TreeD()->GetBranch(branchname);
+        branch->Fill();
         sprintf(branchname,"%sGlobalTrigger",GetName());
         branch = TreeD()->GetBranch(branchname);
         branch->Fill();
+
       } 
       else
       {
@@ -470,6 +491,9 @@ void AliMUONData::Fill(Option_t* option)
         sprintf(branchname,"%sLocalTrigger",GetName());
         branch = TreeR()->GetBranch(branchname); 
         branch->Fill();
+       sprintf(branchname,"%sRegionalTrigger",GetName());
+        branch = TreeR()->GetBranch(branchname); 
+        branch->Fill();
         sprintf(branchname,"%sGlobalTrigger",GetName());
         branch = TreeR()->GetBranch(branchname);
         branch->Fill();
@@ -533,7 +557,7 @@ void AliMUONData::MakeBranch(Option_t* option)
   const char *cS   = strstr(option,"S");   // Digits branches in TreeS
   const char *cRC  = strstr(option,"RC");  // RawCluster branches in TreeR
   const char *cGLT = strstr(option,"GLT"); // Global and Local Trigger branches in TreeD
-  const char *cTC = strstr(option,"TC");   // global and local Trigger branches Copy in TreeR
+  const char *cTC  = strstr(option,"TC");   // global and local Trigger branches Copy in TreeR
   const char *cRT  = strstr(option,"RT");  // Reconstructed Track in TreeT
   const char *cRL  = strstr(option,"RL");  // Reconstructed Trigger Track in TreeT
                                            //const char *cRP  = strstr(option,"RP");  // Reconstructed Particle in TreeP
@@ -622,6 +646,26 @@ void AliMUONData::MakeBranch(Option_t* option)
     }
     branch = treeD->Branch(branchname, &fGlobalTrigger, kBufferSize);
 
+  //
+    // one branch for regional trigger
+    //  
+    sprintf(branchname,"%sRegionalTrigger",GetName());
+    branch = 0x0;
+    
+    if (fRegionalTrigger == 0x0) 
+    {
+      fRegionalTrigger  = new TClonesArray("AliMUONRegionalTrigger",16);
+      fNregionaltrigger = 0;
+    }
+    branch = treeD->GetBranch(branchname);
+    if (branch) 
+    {  
+      AliInfo(Form("Branch RegionalTrigger is already in treeD."));
+      return;
+    }
+    branch = treeD->Branch(branchname, &fRegionalTrigger, kBufferSize);
+  
+
     //
     // one branch for local trigger
     //  
@@ -724,7 +768,24 @@ void AliMUONData::MakeBranch(Option_t* option)
     }
     branch = TreeR()->Branch(branchname, &fGlobalTrigger, kBufferSize);
     //Info("MakeBranch", "Making Branch %s for Global Trigger\n",branchname);
+
+  //
+    // one branch for regional trigger
+    //  
+    sprintf(branchname,"%sRegionalTrigger",GetName());
+    branch = 0x0;
     
+    if (fRegionalTrigger == 0x0) {
+      fRegionalTrigger  = new TClonesArray("AliMUONRegionalTrigger",16);
+      fNregionaltrigger = 0;
+    }
+    branch = TreeR()->GetBranch(branchname);
+    if (branch) {  
+      AliInfo(Form("Branch RegionalTrigger is already in treeR."));
+      return;
+    }
+    branch = TreeR()->Branch(branchname, &fRegionalTrigger, kBufferSize);
+     
     //
     // one branch for local trigger
     //  
@@ -862,8 +923,11 @@ void AliMUONData::ResetTrigger()
 
   fNglobaltrigger = 0;
   if (fGlobalTrigger) fGlobalTrigger->Clear();
+  fNregionaltrigger = 0;
+  if (fRegionalTrigger) fRegionalTrigger->Clear();
   fNlocaltrigger = 0;
   if (fLocalTrigger) fLocalTrigger->Clear();
+
 }
 //____________________________________________________________________________
 void AliMUONData::ResetRecTracks()
@@ -937,6 +1001,9 @@ void AliMUONData::SetTreeAddress(Option_t* option)
     if (fLocalTrigger == 0x0 && cGLT) {
       fLocalTrigger  = new TClonesArray("AliMUONLocalTrigger",234);
     }
+    if (fRegionalTrigger == 0x0 && cGLT) {
+      fRegionalTrigger  = new TClonesArray("AliMUONRegionalTrigger",16);
+    }
     if (fGlobalTrigger== 0x0 && cGLT) {
       fGlobalTrigger = new TClonesArray("AliMUONGlobalTrigger",1); 
     }
@@ -961,6 +1028,12 @@ void AliMUONData::SetTreeAddress(Option_t* option)
     if (branch) branch->SetAddress(&fLocalTrigger);
     else AliWarning(Form("(%s) Failed for LocalTrigger. Can not find branch in treeD.",GetName()));
   }
+ if ( TreeD()  && fRegionalTrigger && cGLT) {
+    sprintf(branchname,"%sRegionalTrigger",GetName());
+    branch = TreeD()->GetBranch(branchname);
+    if (branch) branch->SetAddress(&fRegionalTrigger);
+    else AliWarning(Form("(%s) Failed for RegionalTrigger. Can not find branch in treeD.",GetName()));
+  }
   if ( TreeD() && fGlobalTrigger && cGLT) {
     sprintf(branchname,"%sGlobalTrigger",GetName());
     branch = TreeD()->GetBranch(branchname);
@@ -1020,6 +1093,9 @@ void AliMUONData::SetTreeAddress(Option_t* option)
     if (fLocalTrigger == 0x0 && cTC) {
       fLocalTrigger  = new TClonesArray("AliMUONLocalTrigger",234);
     }
+   if (fRegionalTrigger == 0x0 && cTC) {
+      fRegionalTrigger  = new TClonesArray("AliMUONRegionalTrigger",16);
+    }
     if (fGlobalTrigger== 0x0 && cTC) {
       fGlobalTrigger = new TClonesArray("AliMUONGlobalTrigger",1); 
     }
@@ -1041,6 +1117,14 @@ void AliMUONData::SetTreeAddress(Option_t* option)
     if (branch) branch->SetAddress(&fLocalTrigger);
     else AliWarning(Form("(%s) Failed for LocalTrigger. Can not find branch in treeR.",GetName()));
   }
+
+  if ( TreeR()  && fRegionalTrigger && cTC) {
+    sprintf(branchname,"%sRegionalTrigger",GetName());
+    branch = TreeR()->GetBranch(branchname);
+    if (branch) branch->SetAddress(&fRegionalTrigger);
+    else AliWarning(Form("(%s) Failed for RegionalTrigger. Can not find branch in treeR.",GetName()));
+  }
+
   if ( TreeR() && fGlobalTrigger && cTC) {
     sprintf(branchname,"%sGlobalTrigger",GetName());
     branch = TreeR()->GetBranch(branchname);
index 09545f8..1305628 100644 (file)
@@ -35,6 +35,7 @@ class AliMUONTriggerTrack;
 class AliMUONDigit;
 class AliMUONHit;
 class AliMUONLocalTrigger;
+class AliMUONRegionalTrigger;
 class AliMUONGlobalTrigger;
 
 //__________________________________________________________________
@@ -74,6 +75,8 @@ class AliMUONData : public TNamed
     virtual void   AddGlobalTrigger(const AliMUONGlobalTrigger& trigger); // use copy constructor
 
     virtual void   AddLocalTrigger(const AliMUONLocalTrigger& trigger); // use copy constructor
+    virtual void   AddRegionalTrigger(const AliMUONRegionalTrigger& trigger); // use copy constructor
 
     virtual void   AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
     virtual void   AddRecTrack(const AliMUONTrack& track);
@@ -83,6 +86,7 @@ class AliMUONData : public TNamed
     TClonesArray*  Digits(Int_t DetectionPlane) const;
     TClonesArray*  SDigits(Int_t DetectionPlane) const;
     TClonesArray*  LocalTrigger() const;
+    TClonesArray*  RegionalTrigger() const;
     TClonesArray*  GlobalTrigger() const;    
     TClonesArray*  RawClusters(Int_t DetectionPlane);
     
@@ -192,6 +196,8 @@ class AliMUONData : public TNamed
     TObjArray*      fRawClusters; ///< One event in TreeR/Rawcluster and one branch per tracking detection plane
     TClonesArray*   fGlobalTrigger; ///< List of Global Trigger One event in TreeR/GlobalTriggerBranch
     TClonesArray*   fLocalTrigger;  ///< List of Local Trigger, One event in TreeR/LocalTriggerBranch
+    TClonesArray*   fRegionalTrigger;  ///< List of Regional Trigger, One event in TreeR/LocalTriggerBranch
+
     TClonesArray*   fRecTracks; ///< pointer to array of reconstructed tracks
     TClonesArray*   fRecTriggerTracks; ///< pointer to array of reconstructed trigger tracks
 
@@ -201,6 +207,7 @@ class AliMUONData : public TNamed
     Int_t*          fNrawclusters;  //!< Number of Raw Clusters
     Int_t           fNglobaltrigger;//!< Number of Global trigger
     Int_t           fNlocaltrigger; //!< Number of Local trigger
+    Int_t           fNregionaltrigger; //!< Number of regional trigger
     Int_t           fNrectracks;    //!< Number of reconstructed tracks
     Int_t           fNrectriggertracks; //!< Number of reconstructed tracks
     Int_t           fSplitLevel;   ///< Splitting of branches 0 no spitting (root files are smaller) 1 splitting (larger output files)
diff --git a/MUON/AliMUONRegionalTrigger.cxx b/MUON/AliMUONRegionalTrigger.cxx
new file mode 100644 (file)
index 0000000..0396047
--- /dev/null
@@ -0,0 +1,94 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
+
+#include "AliMUONRegionalTrigger.h"
+#include <assert.h>
+#include "AliLog.h"
+
+/// \class AliMUONRegionalTrigger
+/// Regional Trigger algorithm data outputs
+/// \author Ch. Finck
+
+/// \cond CLASSIMP
+ClassImp(AliMUONRegionalTrigger)
+/// \endcond
+
+//----------------------------------------------------------------------
+AliMUONRegionalTrigger::AliMUONRegionalTrigger()
+  : TObject(), 
+    fId(0),
+    fLocalMask(0),
+    fOutput(0)
+{
+/// Default constructor
+  fLocalOutput[0] = fLocalOutput[1] = 0;
+
+}
+//----------------------------------------------------------------------
+AliMUONRegionalTrigger::AliMUONRegionalTrigger(const AliMUONRegionalTrigger& theMUONRegionalTrig)
+  : TObject(theMUONRegionalTrig)
+{
+/// Copy constructor (useful for TClonesArray)
+
+  fId             = theMUONRegionalTrig.fId;
+  fLocalMask      = theMUONRegionalTrig.fLocalMask;   
+  fLocalOutput[0] = theMUONRegionalTrig.fLocalOutput[0];
+  fLocalOutput[1] = theMUONRegionalTrig.fLocalOutput[1];
+  fOutput         = theMUONRegionalTrig.fOutput;           
+}
+//----------------------------------------------------------------------
+AliMUONRegionalTrigger& AliMUONRegionalTrigger::operator=(const AliMUONRegionalTrigger& theMUONRegionalTrig)
+{
+/// Assigment operator;
+/// equal operator (useful for non-pointer member in TClonesArray)
+
+  if (this == &theMUONRegionalTrig)
+    return *this;
+
+  // base class assignement
+  TObject::operator=(theMUONRegionalTrig);
+
+  fId             = theMUONRegionalTrig.fId;
+  fLocalMask      = theMUONRegionalTrig.fLocalMask;   
+  fLocalOutput[0] = theMUONRegionalTrig.fLocalOutput[0];
+  fLocalOutput[1] = theMUONRegionalTrig.fLocalOutput[1];
+  fOutput         = theMUONRegionalTrig.fOutput;           
+
+  return *this;
+}
+
+
+
+//----------------------------------------------------------------------
+void AliMUONRegionalTrigger::Print(Option_t* opt) const
+{
+  //
+  // Printing Regional Trigger information
+  //
+  TString sopt(opt);
+  sopt.ToUpper();
+  if ( sopt.Contains("FULL") ) { 
+
+      printf("<AliMUONRegionalTrigger> Id %d localMask %d localOutputs %d %d output %d\n",
+            fId, fLocalMask, fLocalOutput[0], fLocalOutput[1], fOutput);
+
+  }
+}
+
diff --git a/MUON/AliMUONRegionalTrigger.h b/MUON/AliMUONRegionalTrigger.h
new file mode 100644 (file)
index 0000000..1ff35fe
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef ALIMUONREGIONALTRIGGER_H
+#define ALIMUONREGIONALTRIGGER_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+// Revision of includes 07/05/2004
+
+/// \ingroup base
+/// \class AliMUONRegionalTrigger
+/// \brief Reconstructed regional Trigger object
+//  Author Ch. Finck
+
+#include <TObject.h>
+
+class AliMUONRegionalTrigger : public TObject {
+ public:
+  AliMUONRegionalTrigger();
+  AliMUONRegionalTrigger(const AliMUONRegionalTrigger& rhs); // copy constructor !
+  virtual ~AliMUONRegionalTrigger(){;}
+  AliMUONRegionalTrigger& operator=(const AliMUONRegionalTrigger& rhs); 
+
+  // getter methods
+  Int_t    GetId()        const {return fId;}
+  UInt_t   GetLocalOutput(Int_t n) const {return fLocalOutput[n];}
+  UShort_t GetLocalMask() const {return fLocalMask;}
+  Char_t   GetOutput()    const {return fOutput;}
+
+  // setter methods
+  void  SetId(Int_t d)           {fId = d;}
+  void  SetLocalOutput(UInt_t local, Int_t n) {fLocalOutput[n] = local;}
+  void  SetLocalMask(UShort_t m) {fLocalMask = m;}
+  void  SetOutput(Char_t o)      {fOutput = o;}
+
+  virtual void Print(Option_t* opt="") const;
+  
+private:
+  Int_t    fId;              ///< regional id 
+  UInt_t   fLocalOutput[2];  ///< local output Lpt & Hpt
+  UShort_t fLocalMask;       ///< local mask
+  UChar_t  fOutput;          ///< regional output (single muon:2, unlike sign:1, like sign:1) 
+
+
+  ClassDef(AliMUONRegionalTrigger,1)  // reconstructed regional Trigger object
+};
+#endif
+
+
+
+
+
+
index 0be01be..51bc372 100644 (file)
@@ -29,6 +29,7 @@
 #include "AliMUONRegionalTriggerBoard.h"
 #include "AliMUONGlobalTriggerBoard.h"
 #include "AliMUONLocalTrigger.h"
+#include "AliMUONRegionalTrigger.h"
 #include "AliMUONGlobalTrigger.h"
 #include "AliMUON.h" 
 #include "AliMUONData.h" 
@@ -640,6 +641,8 @@ void AliMUONTriggerElectronics::Digits2Trigger()
 {
   /// Main method to go from digits to trigger decision
 
+  AliMUONRegionalTrigger *pRegTrig = new AliMUONRegionalTrigger();
+
   ClearDigitNumbers();
   
   fMUONData->ResetTrigger(); 
@@ -655,8 +658,14 @@ void AliMUONTriggerElectronics::Digits2Trigger()
   while ( ( cr = fCrates->NextCrate() ) )
   {            
     TObjArray *boards = cr->Boards();
-    
-    for (Int_t j=1; j<boards->GetEntries(); j++)
+
+    UInt_t regInpLpt = 0;
+    UInt_t regInpHpt = 0;
+    UShort_t localMask = 0x0;
+
+    AliMUONRegionalTriggerBoard *regBoard = (AliMUONRegionalTriggerBoard*)boards->At(0);
+
+    for (Int_t j = 1; j < boards->GetEntries(); j++)
     {     
       TObject *o = boards->At(j);
       
@@ -683,7 +692,16 @@ void AliMUONTriggerElectronics::Digits2Trigger()
           localtr[4] = (response & 12) >> 2;
           localtr[5] = (response & 48) >> 4;
           localtr[6] = (response &  3);
-          
+
+         // calculates regional inputs from local for the moment
+         UInt_t hPt = (response >> 4) & 0x3;
+         UInt_t lPt = (response >> 2) & 0x3;
+           
+         regInpHpt |= hPt << (30 - (j-1)*2);
+         regInpLpt |= lPt << (30 - (j-1)*2);
+         localMask |= (0x1 << (j-1)); // local mask
+
+
           TBits rrr;
           rrr.Set(6,&response);
           
@@ -702,10 +720,19 @@ void AliMUONTriggerElectronics::Digits2Trigger()
           AliMUONLocalTrigger *pLocTrig = new AliMUONLocalTrigger(localtr, fDigitNumbers[icirc]);
           
           fMUONData->AddLocalTrigger(*pLocTrig);  
+         delete pLocTrig;
         }
       }
     }
+    pRegTrig->SetLocalOutput(regInpLpt, 0);
+    pRegTrig->SetLocalOutput(regInpHpt, 1);
+    pRegTrig->SetLocalMask(localMask);
+    pRegTrig->SetOutput((regBoard->GetResponse() >> 4) & 0xF); // to be uniformized (oct06 ?)
+
+    fMUONData->AddRegionalTrigger(*pRegTrig);  
+
   }
+  delete pRegTrig;
   
   // GLOBAL TRIGGER INFORMATION: [0] -> LOW PT 
   //                             [1] -> HIGH PT
@@ -741,7 +768,8 @@ void AliMUONTriggerElectronics::Digits2Trigger()
   
   // ADD A LOCAL TRIGGER IN THE LIST 
   fMUONData->AddGlobalTrigger(*pGloTrig);
-  
+  delete pGloTrig;
+
   // NOW RESET ELECTRONICS
   Reset();
 }