// AliTRDCalibraMode
//
// This class is for the modes of the TRD calibration.
-// The user has to choose with the functions SetNz and SetNrphi the precision of the calibration.
+// The user has to choose with the functions SetNz and SetNrphi
+// the precision of the calibration.
+// Author:
+// R. Bailhache (R.Bailhache@gsi.de)
+//
//Begin_Html
/*
<br>
*/
//End_Html
//
-//
-// Author:
-// R. Bailhache (R.Bailhache@gsi.de)
+//
+// Moreover two other more general granularities:
+// It can not work with AliTRDCalibraVector
+// 10 corresponds to per supermodule
+// 100 all together
//
//////////////////////////////////////////////////////////////////////////////////////
}
+//_____________________________________________________________________________
+void AliTRDCalibraMode::SetPerSuperModule(Int_t i)
+{
+ //
+ // Set the mode of calibration group per supermodule
+ //
+
+ fNz[i] = 10;
+ fNrphi[i] = 10;
+}
+
+//_____________________________________________________________________________
+void AliTRDCalibraMode::SetAllTogether(Int_t i)
+{
+ //
+ // Set the mode of calibration group all together
+ //
+
+ fNz[i] = 100;
+ fNrphi[i] = 100;
+}
+
//_____________________________________________________________________________
void AliTRDCalibraMode::SetNz(Int_t i, Short_t Nz)
{
(Nz < 5)) {
fNz[i] = Nz;
}
- else {
- AliInfo("You have to choose between 0 and 4");
+ else {
+ AliInfo("You have to choose between 0 and 4.");
}
}
fNrphi[i] = Nrphi;
}
else {
- AliInfo("You have to choose between 0 and 6");
+ AliInfo("You have to choose between 0 and 6 or 10/100.");
}
}
fNnZ[i] = 0;
fNnRphi[i] = 0;
- if ((fNz[i] == 0) && (iChamb == 2)) {
+ if (((fNz[i] == 0) || (fNz[i] == 10) || (fNz[i] == 100)) && (iChamb == 2)) {
fNnZ[i] = 12;
}
- if ((fNz[i] == 0) && (iChamb != 2)) {
+ if (((fNz[i] == 0) || (fNz[i] == 10) || (fNz[i] == 100)) && (iChamb != 2)) {
fNnZ[i] = 16;
}
if ((fNz[i] == 1) && (iChamb == 2)) {
fNnZ[i] = 1;
}
- if (fNrphi[i] == 0) {
+ if ((fNrphi[i] == 0) || (fNrphi[i] == 10) || (fNrphi[i] == 100)) {
fNnRphi[i] = 144;
}
if (fNrphi[i] == 1) {
}
//_____________________________________________________________________________________________
-Bool_t AliTRDCalibraMode::ModePadFragmentation(Int_t iPlane,Int_t iChamb, Int_t iSect, Int_t i)
+Bool_t AliTRDCalibraMode::ModePadFragmentation(Int_t iLayer,Int_t iStack, Int_t iSect, Int_t i)
{
//
// Definition of the calibration mode
fNfragRphi[i] = 0;
// A little geometry:
- Int_t rowMax = fGeo->GetRowMax(iPlane,iChamb,iSect);
- Int_t colMax = fGeo->GetColMax(iPlane);
+ Int_t rowMax = fGeo->GetRowMax(iLayer,iStack,iSect);
+ Int_t colMax = fGeo->GetColMax(iLayer);
// The fragmentation
if (fNnZ[i] != 0) {
fXbins[i] = 0;
AliDebug(2, Form("detector: %d", idect));
+ // Total
+ if((fNz[i] == 100) && (fNrphi[i] == 100)) {
+ fXbins[i] = 0;
+ return;
+ }
+
// In which sector?
Int_t sector = GetSector(idect);
- fXbins[i] += sector*(6*fDetChamb2[i]+6*4*fDetChamb0[i]);
- // In which chamber?
- Int_t chamber = GetChamber(idect);
+
+ // First per supermodule
+ if((fNz[i] == 10) && (fNrphi[i] == 10)) {
+ fXbins[i] = sector;
+ return;
+ }
+
+ fXbins[i] += sector*(6*fDetChamb2[i]+6*4*fDetChamb0[i]);
+
+ // In which stack?
+ Int_t stack = GetStack(idect);
Int_t kc = 0;
- while (kc < chamber) {
+ while (kc < stack) {
if (kc == 2) {
fXbins[i] += 6 * fDetChamb2[i];
}
kc ++;
}
- // In which plane?
- Int_t plane = GetPlane(idect);
- if (chamber == 2) {
- fXbins[i] += plane*fDetChamb2[i];
+ // In which layer?
+ Int_t layer = GetLayer(idect);
+ if (stack == 2) {
+ fXbins[i] += layer*fDetChamb2[i];
}
else {
- fXbins[i] += plane*fDetChamb0[i];
+ fXbins[i] += layer*fDetChamb0[i];
}
}
}
//_____________________________________________________________________________
-Int_t AliTRDCalibraMode::GetPlane(Int_t d) const
+Int_t AliTRDCalibraMode::GetLayer(Int_t d) const
{
//
// Reconstruct the plane number from the detector number
}
//_____________________________________________________________________________
-Int_t AliTRDCalibraMode::GetChamber(Int_t d) const
+Int_t AliTRDCalibraMode::GetStack(Int_t d) const
{
//
- // Reconstruct the chamber number from the detector number
+ // Reconstruct the stack number from the detector number
//
- Int_t fgkNplan = 6;
+ const Int_t kNlayer = 6;
- return ((Int_t) (d % 30) / fgkNplan);
+ return ((Int_t) (d % 30) / kNlayer);
}