/* $Id$ */
-/*
-
- New release on 2007/08/17
-
-The default raw data version (now fRAWversion ) is set to 3
-in the constructer because version 3 raw data read and write
-are fully debugged.
-
-*/
-
-//////////////////////////////////////////////////
-// //
-// TRD front end electronics parameters class //
-// Contains all FEE (MCM, TRAP, PASA) related //
-// parameters, constants, and mapping. //
-// //
-//////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+// //
+// TRD front end electronics parameters class //
+// Contains all FEE (MCM, TRAP, PASA) related //
+// parameters, constants, and mapping. //
+// //
+// New release on 2007/08/17: //
+// The default raw data version (now fRAWversion ) is set to 3 //
+// in the constructor because version 3 raw data read and write //
+// are fully debugged. //
+// //
+// Author: //
+// Ken Oyama (oyama@physi.uni-heidelberg.de) //
+// //
+////////////////////////////////////////////////////////////////////////////
#include <TMath.h>
//_____________________________________________________________________________
AliTRDfeeParam* AliTRDfeeParam::Instance()
{
+ //
// Instance constructor
-
+ //
+
if (fgTerminated != kFALSE) {
return 0;
}
}
return fgInstance;
+
}
//_____________________________________________________________________________
delete fgInstance;
fgInstance = 0;
}
+
}
//_____________________________________________________________________________
AliTRDfeeParam::AliTRDfeeParam()
:TObject()
,fCP(0)
+ ,fTFnExp(1)
,fTFr1(0)
,fTFr2(0)
,fTFc1(0)
//
// PASA V.4
- if (fgkTFnExp == 1) {
+ if (fTFnExp == 1) {
fTFr1 = 1.1563;
fTFr2 = 0.1299;
fTFc1 = 0.0657;
fTFc2 = 0.0000;
}
- else if (fgkTFnExp == 2) {
+ else if (fTFnExp == 2) {
fTFr1 = 1.1563;
fTFr2 = 0.1299;
fTFc1 = 0.1141;
fTFc2 = 0.6241;
}
- // fGeo = AliTRDgeometry::Instance();
fCP = AliTRDCommonParam::Instance();
}
AliTRDfeeParam::AliTRDfeeParam(TRootIoCtor *)
:TObject()
,fCP(0)
+ ,fTFnExp(1)
,fTFr1(0)
,fTFr2(0)
,fTFc1(0)
//_____________________________________________________________________________
AliTRDfeeParam::AliTRDfeeParam(const AliTRDfeeParam &p)
:TObject(p)
- // ,fGeo(p.fGeo)
,fCP(p.fCP)
+ ,fTFnExp(p.fTFnExp)
,fTFr1(p.fTFr1)
,fTFr2(p.fTFr2)
,fTFc1(p.fTFc1)
//
// AliTRDfeeParam copy constructor
//
+
}
//_____________________________________________________________________________
//
// AliTRDfeeParam destructor
//
+
}
//_____________________________________________________________________________
if (this != &p) {
((AliTRDfeeParam &) p).Copy(*this);
}
+
return *this;
+
}
//_____________________________________________________________________________
// Copy function
//
- // ((AliTRDfeeParam &) p).fGeo = fGeo;
((AliTRDfeeParam &) p).fCP = fCP;
+ ((AliTRDfeeParam &) p).fTFnExp = fTFnExp;
((AliTRDfeeParam &) p).fTFr1 = fTFr1;
((AliTRDfeeParam &) p).fTFr2 = fTFr2;
((AliTRDfeeParam &) p).fTFc1 = fTFc1;
((AliTRDfeeParam &) p).fRAWstoreRaw = fRAWstoreRaw;
TObject::Copy(p);
+
}
//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetPadRowFromMCM(Int_t irob, Int_t imcm) const
{
//
- // return on which pad row this mcm sits
+ // Return on which pad row this mcm sits
//
return fgkNmcmRobInRow*(irob/2) + imcm/fgkNmcmRobInCol;
+
}
//_____________________________________________________________________________
// Caution: ADC ordering in the online data is opposite to the pad column ordering.
// And it is not one-by-one correspondence. Precise drawing can be found in:
// http://wiki.kip.uni-heidelberg.de/ti/TRD/index.php/Image:ROB_MCM_numbering.pdf
+ //
- if (iadc < 0 || iadc > 19 ) return -100;
+ if (iadc < 0 || iadc > fgkNadcMcm ) return -100;
Int_t mcmcol = imcm%fgkNmcmRobInCol + GetRobSide(irob)*fgkNmcmRobInCol; // MCM column number on ROC [0..7]
Int_t padcol = mcmcol*fgkNcolMcm + fgkNcolMcm + 1 - iadc;
// if( padcol < 0 || padcol >= fgkNcol ) return -1; // thisi s commented because of reson above KO
+
return padcol;
+
}
//_____________________________________________________________________________
if ( irow < 0 || icol < 0 || irow > fgkNrowC1 || icol > fgkNcol ) return -1;
return (icol%(fgkNcol/2))/fgkNcolMcm + fgkNmcmRobInCol*(irow%fgkNmcmRobInRow);
+
}
//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetROBfromPad(Int_t irow, Int_t icol) const
{
//
- // return on which rob this pad is
+ // Return on which rob this pad is
//
return (irow/fgkNmcmRobInRow)*2 + GetColSide(icol);
+
}
//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetRobSide(Int_t irob) const
{
//
- // return on which side this rob sits (A side = 0, B side = 1)
+ // Return on which side this rob sits (A side = 0, B side = 1)
//
if ( irob < 0 || irob >= fgkNrobC1 ) return -1;
+
return irob%2;
+
}
//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetColSide(Int_t icol) const
{
//
- // return on which side this column sits (A side = 0, B side = 1)
+ // Return on which side this column sits (A side = 0, B side = 1)
//
if ( icol < 0 || icol >= fgkNcol ) return -1;
+
return icol/(fgkNcol/2);
+
}
-//
-//void AliTRDfeeParam::GetFilterParam( Float_t &r1, Float_t &r2, Float_t &c1, Float_t &c2, Float_t &ped ) const
+//_____________________________________________________________________________
+//void AliTRDfeeParam::GetFilterParam( Float_t &r1, Float_t &r2, Float_t &c1
+// , Float_t &c2, Float_t &ped ) const
//{
//
// Return current filter parameter
//_____________________________________________________________________________
void AliTRDfeeParam::SetEBsglIndThr(Int_t val)
{
+ //
// Set Event Buffer Sngle Indicator Threshold (EBIS in TRAP conf).
// Timebin is indicated if ADC value >= val.
+ //
if( val >= 0 && val <= 1023 ) {
fEBsglIndThr = val;
AliError(Form("EBsglIndThr value %d is out of range, keep previously set value (%d).",
val, fEBsglIndThr));
}
+
}
//_____________________________________________________________________________
void AliTRDfeeParam::SetEBsumIndThr(Int_t val)
{
+ //
// Set Event Buffer Sum Indicator Threshold (EBIT in TRAP conf).
// Timebin is indicated if ADC sum value >= val.
+ //
if( val >= 0 && val <= 4095 ) {
fEBsumIndThr = val;
- } else {
+ }
+ else {
AliError(Form("EBsumIndThr value %d is out of range, keep previously set value (%d).",
val, fEBsumIndThr));
}
-}
+}
//_____________________________________________________________________________
void AliTRDfeeParam::SetEBindLUT(Int_t val)
{
+ //
// Set Event Buffer Indicator Look-Up Table (EBIL in TRAP conf).
// 8 bits value forms lookup table for combination of three criterions.
+ //
if( val >= 0 && val <= 255 ) {
fEBindLUT = val;
- } else {
+ }
+ else {
AliError(Form("EBindLUT value %d is out of range, keep previously set value (%d).",
val, fEBindLUT));
}
+
}
//_____________________________________________________________________________
void AliTRDfeeParam::SetEBignoreNeighbour(Int_t val)
{
+ //
// Set Event Buffer Indicator Neighbor Sensitivity. (EBIN in TRAP conf).
// If 0, take account of neigbor's values.
+ //
if( val >= 0 && val <= 1 ) {
fEBignoreNeighbour = val;
- } else {
+ }
+ else {
AliError(Form("EBignoreNeighbour value %d is out of range, keep previously set value (%d).",
val, fEBignoreNeighbour));
}
}
//_____________________________________________________________________________
-Int_t AliTRDfeeParam::GetRAWversion()
-{
- // Return raw data version (major number only)
-
- return fRAWversion;
-}
-
-//_____________________________________________________________________________
-void AliTRDfeeParam::SetRAWversion( Int_t rawver )
+void AliTRDfeeParam::SetRAWversion( Int_t rawver )
{
+ //
// Set raw data version (major number only)
// Maximum available number is preset in fgkMaxRAWversion
+ //
if( rawver >= 0 && rawver <= fgkMaxRAWversion ) {
-
- fRAWversion = rawver ;
- } else {
+ fRAWversion = rawver;
+ }
+ else {
AliError(Form("Raw version is out of range: %d",rawver));
}
+
}
//_____________________________________________________________________________
-Bool_t AliTRDfeeParam::GetRAWstoreRaw()
+void AliTRDfeeParam::SetXenon()
{
- // Returns kTRUE if raw data itself is read instead of filtered data
+ //
+ // Sets the filter parameters for the Xenon gas mixture
+ //
+
+ fTFnExp = 1;
+ fTFr1 = 1.1563;
+ fTFr2 = 0.1299;
+ fTFc1 = 0.0657;
+ fTFc2 = 0.0000;
- return fRAWstoreRaw;
}
//_____________________________________________________________________________
-void AliTRDfeeParam::SetRAWstoreRaw( Bool_t storeraw )
+void AliTRDfeeParam::SetArgon()
{
- // If kTRUE is set, raw data itself is read instead of filtered data
+ //
+ // Sets the filter parameters for the Argon gas mixture
+ //
+
+ fTFnExp = 2;
+ fTFr1 = 6.0;
+ fTFr2 = 0.62;
+ fTFc1 = 0.0087;
+ fTFc2 = 0.07;
- fRAWstoreRaw = storeraw;
}
+
+