**************************************************************************/
/*
$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
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"
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
}
// 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;
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);
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;
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;
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;
}
//---
- if(fiDebug==3||fiDebug==5) {
+ if(fDebug==3||fDebug==5) {
cout << "===============================================================" << "\n";
cout << " X plane after sgle and dble " << " \n";
cout << " 0987654321098765432109876543210";
}
//-----------
- if(fiDebug==3||fiDebug==5) {
+ if(fDebug==3||fDebug==5) {
cout << "===============================================================" << "\n";
for (i=30; i>=0; i--) {
cout << i << "\t ";
}
//---
- if(fiDebug==3||fiDebug==5) {
+ if(fDebug==3||fDebug==5) {
cout << "===============================================================" << "\n";
for (i=30; i>=0; i--) {
cout << i << "\t ";
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--) {
}
//--
- if(fiDebug==3||fiDebug==5) {
+ if(fDebug==3||fDebug==5) {
cout << "===============================================================" << "\n";
cout << " sorting : 2nd level " << "\n";
for (i=7; i>=0; i--) {
}
//--
- if(fiDebug==3||fiDebug==5) {
+ if(fDebug==3||fDebug==5) {
cout << "===============================================================" << "\n";
cout << " sorting : 3rd level " << "\n";
for (i=3; i>=0; i--) {
}
//--
- if(fiDebug==3||fiDebug==5) {
+ if(fDebug==3||fDebug==5) {
cout << "===============================================================" << "\n";
cout << " sorting : 4th level " << "\n";
for (i=1; i>=0; i--) {
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];}
}
// 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";
}
//debug
- if(fiDebug==4||fiDebug==5) {
+ if(fDebug==4||fDebug==5) {
cout << "===============================================================" << "\n";
cout << " Y plane after sgle dble " << "\n";
cout << " ";
//debug
- if(fiDebug==4||fiDebug==5) {
+ if(fDebug==4||fDebug==5) {
cout << "===============================================================" << "\n";
cout << " Y plane frontImage\n";
cout << " ";
}
if (iTrigger==1) {
-// fill fiTrigger fStripX11 fStripY11
- fiTrigger[icirc] = 1;
+// fill fTrigger fStripX11 fStripY11
+ fTrigger[icirc] = 1;
fStripX11[icirc] = istripX1Circ;
fStripY11[icirc] = iStripY;
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";
for (i=1; i>=0; i--) { cout << fLutApt[icirc][i] ; }
cout << "\n";
cout << "-------------------------------------------" << "\n";
- } // fiDebug > 1
+ } // fDebug > 1
} // local trigger = 1
}
fGlobalSingleUndef[i]*fGlobalSingleMinus[i];
}
- if (fiDebug>=1) {
+ if (fDebug>=1) {
cout << "\n";
cout << "===================================================" << "\n";
cout << " Global Trigger output " << "Low pt High pt All" << "\n";
//----------------------------------------------------------------------
Int_t AliMUONTriggerDecision::GetITrigger(Int_t icirc){
// returns Local Trigger Status
- return fiTrigger[icirc];
+ return fTrigger[icirc];
}
//----------------------------------------------------------------------
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){