1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 //-----------------------------------------------------------------------------
19 /// \class AliMUONTriggerLut
21 /// Local Trigger Look Up Table
22 /// reading interface LUT data is stored into TH3S histograms and readout
23 /// from the Local Trigger algorithm
24 /// \author Philippe Crochet
25 //-----------------------------------------------------------------------------
27 #include "AliMUONTriggerLut.h"
35 ClassImp(AliMUONTriggerLut)
38 //----------------------------------------------------------------------
39 AliMUONTriggerLut::AliMUONTriggerLut()
54 //----------------------------------------------------------------------
55 AliMUONTriggerLut::~AliMUONTriggerLut()
70 //----------------------------------------------------------------------
71 void AliMUONTriggerLut::ReadFromFile(const char* filename)
73 /// Return output of LuT for corresponding TH3S
79 AliFatal(Form("Could not open file %s",filename));
82 AliDebug(1,Form("filename=%s",filename));
84 // fLptPlus = (TH3*)(f.Get("LptPlus")->Clone());
85 // fLptMinu = (TH3*)(f.Get("LptMinu")->Clone());
86 // fLptUnde = (TH3*)(f.Get("LptUnde")->Clone());
87 // fHptPlus = (TH3*)(f.Get("HptPlus")->Clone());
88 // fHptMinu = (TH3*)(f.Get("HptMinu")->Clone());
89 // fHptUnde = (TH3*)(f.Get("HptUnde")->Clone());
90 // fAptPlus = (TH3*)(f.Get("AptPlus")->Clone());
91 // fAptMinu = (TH3*)(f.Get("AptMinu")->Clone());
92 // fAptUnde = (TH3*)(f.Get("AptUnde")->Clone());
94 fLptPlus = (TH3*)(f.Get("LptPlus"));
95 fLptMinu = (TH3*)(f.Get("LptMinu"));
96 fLptUnde = (TH3*)(f.Get("LptUnde"));
97 fHptPlus = (TH3*)(f.Get("HptPlus"));
98 fHptMinu = (TH3*)(f.Get("HptMinu"));
99 fHptUnde = (TH3*)(f.Get("HptUnde"));
100 fAptPlus = (TH3*)(f.Get("AptPlus"));
101 fAptMinu = (TH3*)(f.Get("AptMinu"));
102 fAptUnde = (TH3*)(f.Get("AptUnde"));
104 // insure we "detach" those histograms from file f
105 fLptPlus->SetDirectory(0);
106 fLptMinu->SetDirectory(0);
107 fLptUnde->SetDirectory(0);
108 fHptPlus->SetDirectory(0);
109 fHptMinu->SetDirectory(0);
110 fHptUnde->SetDirectory(0);
111 fAptPlus->SetDirectory(0);
112 fAptMinu->SetDirectory(0);
113 fAptUnde->SetDirectory(0);
116 //----------------------------------------------------------------------
117 void AliMUONTriggerLut::GetLutOutput(Int_t circuit, Int_t xstrip, Int_t idev,
118 Int_t ystrip, Int_t lutLpt[2],
121 /// Return output of LuT for corresponding TH3S
125 ReadFromFile("$(ALICE_ROOT)/MUON/data/MUONTriggerLut.root");
130 Int_t mask = GetMask(ystrip); // get ystrip mask
132 // Low pt..............................................
133 bin = fLptPlus->GetBin(circuit,xstrip,idev);
134 binc = (Short_t)fLptPlus->GetBinContent(bin);
135 if ((binc & mask)!=0) lutLpt[1]=1;
137 bin = fLptMinu->GetBin(circuit,xstrip,idev);
138 binc = (Short_t)fLptMinu->GetBinContent(bin);
139 if ((binc & mask)!=0) lutLpt[0]=1;
141 bin = fLptUnde->GetBin(circuit,xstrip,idev);
142 binc = (Short_t)fLptUnde->GetBinContent(bin);
143 if ((binc & mask)!=0) lutLpt[0]=lutLpt[1]=1;
145 // High pt.............................................
146 bin = fHptPlus->GetBin(circuit,xstrip,idev);
147 binc = (Short_t)fHptPlus->GetBinContent(bin);
148 if ((binc & mask)!=0) lutHpt[1]=1;
150 bin = fHptMinu->GetBin(circuit,xstrip,idev);
151 binc = (Short_t)fHptMinu->GetBinContent(bin);
152 if ((binc & mask)!=0) lutHpt[0]=1;
154 bin = fHptUnde->GetBin(circuit,xstrip,idev);
155 binc = (Short_t)fHptUnde->GetBinContent(bin);
156 if ((binc & mask)!=0) lutHpt[0]=lutHpt[1]=1;
158 // All pts.............................................
159 bin = fAptPlus->GetBin(circuit,xstrip,idev);
160 binc = (Short_t)fAptPlus->GetBinContent(bin);
161 if ((binc & mask)!=0) lutApt[1]=1;
163 bin = fAptMinu->GetBin(circuit,xstrip,idev);
164 binc = (Short_t)fAptMinu->GetBinContent(bin);
165 if ((binc & mask)!=0) lutApt[0]=1;
167 bin = fAptUnde->GetBin(circuit,xstrip,idev);
168 binc = (Short_t)fAptUnde->GetBinContent(bin);
169 if ((binc & mask)!=0) lutApt[0]=lutApt[1]=1;
173 //----------------------------------------------------------------------
174 Int_t AliMUONTriggerLut::GetMask(Int_t ystrip)
176 /// Return the mask corresponding to ystrip
178 return (Int_t)(1<<ystrip);