]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTriggerDecision.cxx
Remove some deletes from dtor, those objects are deleted earlier in Exec() method...
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerDecision.cxx
index e2fe1ff6890e402b05a71d828001c3ec9d706fe1..363232d90f551fc51f9e8c7a96a1010bd4b64b63 100644 (file)
  **************************************************************************/
 /*
 $Log$
+Revision 1.8  2001/03/20 16:13:01  pcrochet
+bug fixed in the rejection of soft background (thanks to FM)
+
+Revision 1.7  2001/03/20 13:32:37  egangler
+includes cleanup
+
+Revision 1.6  2001/01/26 21:57:09  morsch
+Use access functions to AliMUONDigit member data.
+
+Revision 1.5  2000/10/02 16:58:29  egangler
+Cleaning of the code :
+-> coding conventions
+-> void Streamers
+-> some useless includes removed or replaced by "class" statement
+
+Revision 1.4  2000/07/03 11:54:57  morsch
+AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHitMap in STEER
+The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
+
+Revision 1.3  2000/06/25 17:02:19  pcrochet
+scope problem on HP, i declared once, pow replaced by TMath::Power (PH)
+
 Revision 1.2  2000/06/15 07:58:49  morsch
 Code from MUON-dev joined
 
@@ -38,14 +60,13 @@ Revision 1.1.2.2  2000/03/21 09:24:34  morsch
 Author and responsible for the code: Philippe Crochet
 */
 
-
+#include "AliMUONTriggerCircuit.h"
 #include "AliMUONTriggerDecision.h"
 #include "AliMUONTriggerLut.h"
 #include "AliMUONHitMapA1.h"
 #include "AliRun.h"
 #include "AliMUON.h"
-#include "AliMUONPoints.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
 #include "AliMUONResponse.h"
 #include "AliMUONChamber.h"
 #include "AliMUONDigit.h"
@@ -68,7 +89,7 @@ ClassImp(AliMUONTriggerDecision)
 AliMUONTriggerDecision::AliMUONTriggerDecision(Int_t iprint)
 {
 // Constructor 
-  fiDebug = iprint;            // print option
+  fDebug = iprint;            // print option
 // iprint = 0 : don't print anything
 // iprint = 1 : print Global Trigger Output
 // iprint = 2 : print Local and Global Trigger Outputs
@@ -91,9 +112,9 @@ AliMUONTriggerDecision::AliMUONTriggerDecision(Int_t iprint)
   }
   // Local Trigger information
   for (icirc=0; icirc<234; icirc++){
-    fiTrigger[icirc]=0;                   // trigger or not
+    fTrigger[icirc]=0;                   // trigger or not
     fStripX11[icirc]=0;                   // X strip in MC11 which triggers 
-    fdev[icirc]=0;                        // deviation which triggers 
+    fDev[icirc]=0;                        // deviation which triggers 
     fStripY11[icirc]=0;                   // Y strip in MC11 which triggers 
     for (i=0; i<2; i++) {           // pt information via LuT
       fLutLpt[icirc][i]=fLutHpt[icirc][i]=fLutApt[icirc][i]=0;    
@@ -158,7 +179,7 @@ void AliMUONTriggerDecision::Trigger(){
     Int_t iTrigger=0;
     LocalTrigger(icirc, minDevStrip, minDev, coordY, iTrigger);
 
-    if (iTrigger==1&&fiDebug>1) { 
+    if (iTrigger==1&&fDebug>1) { 
       PrintBitPatXInput(icirc);
       PrintBitPatYInput(icirc);
       PrintLocalOutput(minDevStrip, minDev, coordY);
@@ -198,9 +219,9 @@ void AliMUONTriggerDecision::ResetBit(){
     fGlobalPairLike[i]=0;
   }
   for (icirc=0; icirc<234; icirc++){
-    fiTrigger[icirc]=0;
+    fTrigger[icirc]=0;
     fStripX11[icirc]=0;
-    fdev[icirc]=0;                      
+    fDev[icirc]=0;                      
     fStripY11[icirc]=0;                 
     for (i=0; i<2; i++) {         
       fLutLpt[icirc][i]=fLutHpt[icirc][i]=fLutApt[icirc][i]=0;    
@@ -221,16 +242,22 @@ void AliMUONTriggerDecision::SetBit(){
   for (Int_t chamber=11; chamber<15; chamber++){
     for (Int_t cathode=1; cathode<3; cathode++){
       
-      AliMUONChamber*  iChamber;
-      AliMUONSegmentation*  segmentation;
+      AliMUONChamber*   iChamber;
+      AliSegmentation*  segmentation;
       
       TClonesArray *muonDigits  = pMUON->DigitsAddress(chamber-1);
       if (muonDigits == 0) return;
       
       gAlice->ResetDigits();
+      Int_t nent = 0;
+      
+      if (gAlice->TreeD()) {
+       nent = (Int_t) gAlice->TreeD()->GetEntries();
+       //printf(" entries %d \n", nent);
+       //     gAlice->TreeD()->GetEvent(nent-2+cathode-1);
+       gAlice->TreeD()->GetEvent(cathode-1);
+      }
       
-      Int_t nent=(Int_t)gAlice->TreeD()->GetEntries();
-      gAlice->TreeD()->GetEvent(nent-2+cathode-1);
       Int_t ndigits = muonDigits->GetEntriesFast();
       if (ndigits == 0) return;
       
@@ -241,17 +268,16 @@ void AliMUONTriggerDecision::SetBit(){
       for (Int_t digit=0; digit<ndigits; digit++) {
        mdig    = (AliMUONDigit*)muonDigits->UncheckedAt(digit);
 // get the center of the pad Id 
-       Int_t ix=mdig->fPadX;
-       Int_t iy=mdig->fPadY;
+       Int_t ix=mdig->PadX();
+       Int_t iy=mdig->PadY();
 // get the sum of the coded charge 
 // see coding convention in AliMUONChamberTrigger::DisIntegration      
        Int_t sumCharge=0;
        for (Int_t icharge=0; icharge<10; icharge++) {
-         sumCharge=sumCharge+mdig->fTcharges[icharge];
+         sumCharge=sumCharge+mdig->TrackCharge(icharge);
        }
 // apply condition on soft background  
        Int_t testCharge=sumCharge-(Int_t(sumCharge/10))*10;
-       testCharge=sumCharge-testCharge*10;
        if(sumCharge<=10||testCharge>0) {         
 // code pad
          Int_t code=TMath::Abs(ix)*100+iy;
@@ -519,7 +545,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
   }
 
 //--- 
-  if(fiDebug==3||fiDebug==5) {
+  if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << " X plane after sgle and dble " << " \n";
     cout << "                       0987654321098765432109876543210";
@@ -594,7 +620,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
  }
 
   //-----------
- if(fiDebug==3||fiDebug==5) {
+ if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
    for (i=30; i>=0; i--) {
      cout << i << "\t ";
@@ -694,7 +720,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
   }
   
 //---
-  if(fiDebug==3||fiDebug==5) {
+  if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
     for (i=30; i>=0; i--) {
       cout << i << "\t ";
@@ -716,7 +742,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
     Sort2x5(dev[30],tmpMax,tmpbga1[15],bga1[15]);
 
 //--    
-  if(fiDebug==3||fiDebug==5) {
+  if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << " sorting : 1st level " << "\n";
     for (i=15; i>=0; i--) {
@@ -733,7 +759,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
   }
 
 //--    
-  if(fiDebug==3||fiDebug==5) {
+  if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << " sorting : 2nd level " << "\n";
     for (i=7; i>=0; i--) {
@@ -750,7 +776,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
   }
 
 //--    
-  if(fiDebug==3||fiDebug==5) {
+  if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << " sorting : 3rd level " << "\n";
     for (i=3; i>=0; i--) {
@@ -767,7 +793,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
   }
 
 //--    
-  if(fiDebug==3||fiDebug==5) {
+  if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << " sorting : 4th level " << "\n";
     for (i=1; i>=0; i--) {
@@ -800,7 +826,7 @@ void AliMUONTriggerDecision::TrigX(Int_t ch1q[16], Int_t ch2q[16],
     tmpAd=minDevStrip[1]+minDevStrip[2]*2+minDevStrip[3]*4+minDevStrip[4]*8;
     if (tmpAd<=15) minDevStrip[0]=bga1[tmpAd];
 
-  if(fiDebug==3||fiDebug==5) {
+  if(fDebug==3||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << "minDevStrip = ";
     for  (i=4; i>=0; i--) {cout << minDevStrip[i];}
@@ -909,7 +935,7 @@ void AliMUONTriggerDecision::TrigY(Int_t y1[16], Int_t y2[16],
   }
 
 // debug
-  if(fiDebug==4||fiDebug==5) {
+  if(fDebug==4||fDebug==5) {
     cout << "===============================================================" << "\n";  
     cout << " Y plane after PreHandling x2m x2ud orMud " 
         << x2m << " , " << x2ud << " , " << orMud[0] << orMud[1] << "\n"; 
@@ -954,7 +980,7 @@ void AliMUONTriggerDecision::TrigY(Int_t y1[16], Int_t y2[16],
   }
 
   //debug
-  if(fiDebug==4||fiDebug==5) {
+  if(fDebug==4||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << " Y plane after sgle dble " << "\n"; 
     cout << "                            ";
@@ -1018,7 +1044,7 @@ void AliMUONTriggerDecision::TrigY(Int_t y1[16], Int_t y2[16],
 
 
 //debug
-  if(fiDebug==4||fiDebug==5) {
+  if(fDebug==4||fDebug==5) {
     cout << "===============================================================" << "\n";
     cout << " Y plane frontImage\n";
     cout << "                            ";
@@ -1110,8 +1136,8 @@ void AliMUONTriggerDecision::LocalTrigger(Int_t icirc,
   }
   
   if (iTrigger==1) { 
-// fill fiTrigger fStripX11 fStripY11 
-    fiTrigger[icirc] = 1;
+// fill fTrigger fStripX11 fStripY11 
+    fTrigger[icirc] = 1;
     fStripX11[icirc] = istripX1Circ;
     fStripY11[icirc] = iStripY;
     
@@ -1120,19 +1146,19 @@ void AliMUONTriggerDecision::LocalTrigger(Int_t icirc,
     if (signDev==0&&deviation!=0) sign=-1;
     if (signDev==0&&deviation==0) sign=0;
     if (signDev==1)               sign=1;    
-    fdev[icirc] = sign * deviation + 15; // fill fdev 
+    fDev[icirc] = sign * deviation + 15; // fill fDev 
 
 // get Lut output for circuit/istripX/idev/istripY
     AliMUONTriggerLut* lut = new AliMUONTriggerLut;    
     //    lut->StartEvent();
-    lut->GetLutOutput(icirc,fStripX11[icirc],fdev[icirc],fStripY11[icirc],
+    lut->GetLutOutput(icirc,fStripX11[icirc],fDev[icirc],fStripY11[icirc],
                      fLutLpt[icirc],fLutHpt[icirc],fLutApt[icirc]);
     //    lut->FinishEvent();
     delete lut;
     
-    if (fiDebug>1) {
+    if (fDebug>1) {
       Float_t pt= // get ptCal corresponding to istripX1Circ/idev/iStripY
-      triggerCircuit->PtCal(fStripX11[icirc],fdev[icirc],fStripY11[icirc]);
+      triggerCircuit->PtCal(fStripX11[icirc],fDev[icirc],fStripY11[icirc]);
       cout << "-------------------------------------------" << "\n";
       cout << " Local Trigger info for circuit Id " << idCircuit 
           << " (number " << icirc << ")" << "\n";
@@ -1149,7 +1175,7 @@ void AliMUONTriggerDecision::LocalTrigger(Int_t icirc,
       for (i=1; i>=0; i--) { cout << fLutApt[icirc][i] ; }       
       cout << "\n";
       cout << "-------------------------------------------" << "\n";
-    } // fiDebug > 1    
+    } // fDebug > 1    
   }  // local trigger = 1
 }
 
@@ -1198,7 +1224,7 @@ void AliMUONTriggerDecision::GlobalTrigger(){
       fGlobalSingleUndef[i]*fGlobalSingleMinus[i]; 
   }
   
-  if (fiDebug>=1) {
+  if (fDebug>=1) {
     cout << "\n";
     cout << "===================================================" << "\n";
     cout << " Global Trigger output       " << "Low pt  High pt   All"  << "\n";
@@ -1333,7 +1359,7 @@ void AliMUONTriggerDecision::PrintLocalOutput(Int_t minDevStrip[5],
 //----------------------------------------------------------------------
 Int_t AliMUONTriggerDecision::GetITrigger(Int_t icirc){
 // returns Local Trigger Status
-  return fiTrigger[icirc];
+  return fTrigger[icirc];
 }
 //----------------------------------------------------------------------
 Int_t AliMUONTriggerDecision::GetStripX11(Int_t icirc){
@@ -1343,7 +1369,7 @@ Int_t AliMUONTriggerDecision::GetStripX11(Int_t icirc){
 //----------------------------------------------------------------------
 Int_t AliMUONTriggerDecision::GetDev(Int_t icirc){
 // returns idev
-  return fdev[icirc];
+  return fDev[icirc];
 }
 //----------------------------------------------------------------------
 Int_t AliMUONTriggerDecision::GetStripY11(Int_t icirc){