]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Add local cards pattern & local decision words (Christian)
authorcussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jul 2004 09:18:34 +0000 (09:18 +0000)
committercussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jul 2004 09:18:34 +0000 (09:18 +0000)
MUON/AliMUONLocalTrigger.cxx
MUON/AliMUONLocalTrigger.h
MUON/AliMUONTriggerDecision.cxx

index 5a3449b0441d1b2009c2f7424c72842b7146599c..9f636fe9a1589d12abe118f2b208244739e15d38 100644 (file)
@@ -30,6 +30,19 @@ AliMUONLocalTrigger::AliMUONLocalTrigger()
   fLoLpt     = 0;
   fLoHpt     = 0;
   fLoApt     = 0;
+
+  fX1Pattern  = 0;
+  fX2Pattern  = 0;
+  fX3Pattern  = 0;
+  fX4Pattern  = 0;
+
+  fY1Pattern  = 0;
+  fY2Pattern  = 0;
+  fY3Pattern  = 0;
+  fY4Pattern  = 0;
+
+  fLoDecision = 0;
+
 }
 //----------------------------------------------------------------------
 AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocalTrig)
@@ -43,6 +56,18 @@ AliMUONLocalTrigger::AliMUONLocalTrigger(const AliMUONLocalTrigger& theMUONLocal
   fLoLpt     = theMUONLocalTrig.fLoLpt;
   fLoHpt     = theMUONLocalTrig.fLoHpt;
   fLoApt     = theMUONLocalTrig.fLoApt;
+
+  fX1Pattern  = theMUONLocalTrig.fX1Pattern;
+  fX2Pattern  = theMUONLocalTrig.fX2Pattern;
+  fX3Pattern  = theMUONLocalTrig.fX3Pattern;
+  fX4Pattern  = theMUONLocalTrig.fX4Pattern;
+
+  fY1Pattern  = theMUONLocalTrig.fY1Pattern;
+  fY2Pattern  = theMUONLocalTrig.fY2Pattern;
+  fY3Pattern  = theMUONLocalTrig.fY3Pattern;
+  fY4Pattern  = theMUONLocalTrig.fY4Pattern;
+
+  fLoDecision =  theMUONLocalTrig.fLoDecision;
 }
 //----------------------------------------------------------------------
 AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& theMUONLocalTrig)
@@ -62,11 +87,23 @@ AliMUONLocalTrigger& AliMUONLocalTrigger::operator=(const AliMUONLocalTrigger& t
   fLoHpt     = theMUONLocalTrig.fLoHpt;
   fLoApt     = theMUONLocalTrig.fLoApt;
 
+  fX1Pattern  = theMUONLocalTrig.fX1Pattern;
+  fX2Pattern  = theMUONLocalTrig.fX2Pattern;
+  fX3Pattern  = theMUONLocalTrig.fX3Pattern;
+  fX4Pattern  = theMUONLocalTrig.fX4Pattern;
+
+  fY1Pattern  = theMUONLocalTrig.fY1Pattern;
+  fY2Pattern  = theMUONLocalTrig.fY2Pattern;
+  fY3Pattern  = theMUONLocalTrig.fY3Pattern;
+  fY4Pattern  = theMUONLocalTrig.fY4Pattern;
+
+  fLoDecision =  theMUONLocalTrig.fLoDecision;
+
   return *this;
 }
 
 //----------------------------------------------------------------------
-AliMUONLocalTrigger::AliMUONLocalTrigger(Int_t *localtr)
+AliMUONLocalTrigger::AliMUONLocalTrigger(Int_tlocaltr)
 {
 // add a local trigger object 
   fLoCircuit = localtr[0];
@@ -76,5 +113,23 @@ AliMUONLocalTrigger::AliMUONLocalTrigger(Int_t *localtr)
   fLoLpt     = localtr[4];
   fLoHpt     = localtr[5];
   fLoApt     = localtr[6];
+
+  // keep on with this way
+  fX1Pattern = (UShort_t)localtr[7];
+  fX2Pattern = (UShort_t)localtr[8];
+  fX3Pattern = (UShort_t)localtr[9];
+  fX4Pattern = (UShort_t)localtr[10];
+
+  fY1Pattern = (UShort_t)localtr[11];
+  fY2Pattern = (UShort_t)localtr[12];
+  fY3Pattern = (UShort_t)localtr[13];
+  fY4Pattern = (UShort_t)localtr[14];
 }
+//----------------------------------------------------------------------
+Char_t AliMUONLocalTrigger::GetLoDecision()
+{
+  fLoDecision  = (fLoLpt & 0x3);
+  fLoDecision |= (fLoHpt << 2) & 0xC;
 
+  return fLoDecision;
+}
index 7c16ff3f6b3be9125753e92cc9d05680e9d38262..6911f8b208d0c5a91f791822bc1ca207178122b3 100644 (file)
@@ -13,7 +13,7 @@ class AliMUONLocalTrigger : public TObject {
  public:
   AliMUONLocalTrigger();
   AliMUONLocalTrigger(const AliMUONLocalTrigger& rhs); // copy constructor !
-  AliMUONLocalTrigger(Int_t *localtr);
+  AliMUONLocalTrigger(Int_tlocaltr);
   virtual ~AliMUONLocalTrigger(){;}
   AliMUONLocalTrigger& operator=(const AliMUONLocalTrigger& rhs); 
 
@@ -23,9 +23,22 @@ class AliMUONLocalTrigger : public TObject {
   Int_t LoStripY() const {return fLoStripY;};  
   Int_t LoLpt() const {return fLoLpt;};     
   Int_t LoHpt() const {return fLoHpt;};     
-  Int_t LoApt() const {return fLoApt;};    
+  Int_t LoApt() const {return fLoApt;}; 
 
-  ClassDef(AliMUONLocalTrigger,1)  // reconstructed Local Trigger object
+   
+  UShort_t GetX1Pattern() const {return fX1Pattern;}
+  UShort_t GetX2Pattern() const {return fX2Pattern;}
+  UShort_t GetX3Pattern() const {return fX3Pattern;}
+  UShort_t GetX4Pattern() const {return fX4Pattern;}
+
+  UShort_t GetY1Pattern() const {return fY1Pattern;}
+  UShort_t GetY2Pattern() const {return fY2Pattern;}
+  UShort_t GetY3Pattern() const {return fY3Pattern;}
+  UShort_t GetY4Pattern() const {return fY4Pattern;}
+
+  Char_t GetLoDecision();
+
+  ClassDef(AliMUONLocalTrigger,2)  // reconstructed Local Trigger object
 
 private:
   Int_t fLoCircuit; // circuit number 
@@ -35,7 +48,18 @@ private:
   Int_t fLoLpt;     // Low pt  0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
   Int_t fLoHpt;     // High pt 0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
   Int_t fLoApt;     // All pt  0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
-   
+
+  UShort_t fX1Pattern; // X and Y strip pattern for each chamber
+  UShort_t fX2Pattern;
+  UShort_t fX3Pattern;
+  UShort_t fX4Pattern;
+  UShort_t fY1Pattern;
+  UShort_t fY2Pattern;
+  UShort_t fY3Pattern;
+  UShort_t fY4Pattern;
+
+  Char_t fLoDecision; // local decision word (4 bits)
 };
 #endif
 
index e3e4f8838d0963cdf661178a8e5af6d640659ced..7901ec0e1c1a8315c426f9f8c1be76b6d190702f 100644 (file)
@@ -1404,18 +1404,33 @@ void AliMUONTriggerDecision::Digits2Trigger(){
   
   for (Int_t icirc=0; icirc<AliMUONConstants::NTriggerCircuit(); icirc++) { 
     if(GetITrigger(icirc)==1) {
-      Int_t localtr[7]={0,0,0,0,0,0,0};      
+      Int_t localtr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};      
       Int_t loLpt[2]={0,0}; Int_t loHpt[2]={0,0}; Int_t loApt[2]={0,0};
       GetLutOutput(icirc, loLpt, loHpt, loApt);
       localtr[0] = icirc;
       localtr[1] = GetStripX11(icirc);
       localtr[2] = GetDev(icirc);
       localtr[3] = GetStripY11(icirc);
-      for (Int_t i=0; i<2; i++) {    // convert the Lut output in 1 digit 
-       localtr[4] = localtr[4]+Int_t(loLpt[i]*TMath::Power(2,i));
-       localtr[5] = localtr[5]+Int_t(loHpt[i]*TMath::Power(2,i));
-       localtr[6] = localtr[6]+Int_t(loApt[i]*TMath::Power(2,i));
+      for (Int_t i = 0; i < 2; i++) {    // convert the Lut output in 1 digit 
+       localtr[4] += Int_t(loLpt[i]*TMath::Power(2,i));
+       localtr[5] += Int_t(loHpt[i]*TMath::Power(2,i));
+       localtr[6] += Int_t(loApt[i]*TMath::Power(2,i));
       }
+
+      for (Int_t i = 0; i < 16; i++) {    // convert X/Y bit in bit pattern
+       localtr[7]  |= (fXbit11[icirc][i] << i);
+       localtr[8]  |= (fXbit12[icirc][i] << i);
+
+       // 8 first and last elts correspond to neighbouring cards
+       localtr[9]  |= (fXbit21[icirc][i+8] << i);
+       localtr[10] |= (fXbit22[icirc][i+8] << i);
+
+       localtr[11] |= (fYbit11[icirc][i] << i);
+       localtr[12] |= (fYbit12[icirc][i] << i);
+       localtr[13] |= (fYbit21[icirc][i] << i);
+       localtr[14] |= (fYbit22[icirc][i] << i);
+      }
+
       AliMUONLocalTrigger* pLocTrig = new AliMUONLocalTrigger(localtr);
       fMUONData->AddLocalTrigger(*pLocTrig);  // add a local trigger in the list
     }