// 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
//
//////////////////////////////////////////////////////////////////////////////////////
#include "AliLog.h"
#include "AliTRDCalibraMode.h"
-#include "AliTRDCommonParam.h"
+#include "AliTRDgeometry.h"
ClassImp(AliTRDCalibraMode)
//______________________________________________________________________________________
AliTRDCalibraMode::AliTRDCalibraMode()
:TObject()
+ ,fGeo(0)
{
//
// Default constructor
fNfragRphi[i] = -1;
fXbins[i] = -1;
}
-
+
+ fGeo = new AliTRDgeometry();
+
}
//______________________________________________________________________________________
AliTRDCalibraMode::AliTRDCalibraMode(const AliTRDCalibraMode &c)
:TObject(c)
+ ,fGeo(0)
{
//
// Copy constructor
fDetChamb2[k] = c.fDetChamb2[k];
}
+ if (fGeo) {
+ delete fGeo;
+ }
+ fGeo = new AliTRDgeometry();
+
}
+
//____________________________________________________________________________________
AliTRDCalibraMode::~AliTRDCalibraMode()
{
// AliTRDCalibraMode destructor
//
+ if (fGeo) {
+ delete fGeo;
+ }
+
+}
+
+//_____________________________________________________________________________
+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;
}
//_____________________________________________________________________________
(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
fNfragZ[i] = 0;
fNfragRphi[i] = 0;
-
- AliTRDCommonParam *parCom = AliTRDCommonParam::Instance();
- if (!parCom) {
- AliInfo("Could not get CommonParam Manager");
- return kFALSE;
- }
// A little geometry:
- Int_t rowMax = parCom->GetRowMax(iPlane,iChamb,iSect);
- Int_t colMax = parCom->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);
}