+//_____________________________________________________________________________
+void AliTOFDecoder::GetArrayDDL(Int_t* array, Int_t ddl){
+
+ // method that fills array with the
+ // TOF channels indexes corresponding
+ // to DDL iDDL
+
+ AliTOFGeometry *geom = new AliTOFGeometry();
+ Int_t indexDDL = ddl%4;
+ Int_t iSector = Int_t(ddl/4);
+ if (fVerbose)
+ AliInfo(Form(" Sector = %i, DDL within sector = %i",iSector, indexDDL));
+
+ Int_t volume[5];
+ volume[0]=iSector;
+ Int_t minPlate=0, maxPlate=0, minStrip2=0, maxStrip2=0, minPadz=0, maxPadz=0, minPadx=0, maxPadx=0;
+
+ if (indexDDL==0){
+ minPlate=kMinPlate0;
+ maxPlate=kMaxPlate0;
+ minStrip2=kMinStrip0;
+ maxStrip2=kMaxStrip0;
+ minPadz=kMinPadz0;
+ maxPadz=kMaxPadz0;
+ minPadx=kMinPadx0;
+ maxPadx=kMaxPadx0;
+ }
+
+ else if (indexDDL==1){
+ minPlate=kMinPlate1;
+ maxPlate=kMaxPlate1;
+ minStrip2=kMinStrip1;
+ maxStrip2=kMaxStrip1;
+ minPadz=kMinPadz1;
+ maxPadz=kMaxPadz1;
+ minPadx=kMinPadx1;
+ maxPadx=kMaxPadx1;
+ }
+
+ else if (indexDDL==2){
+ minPlate=kMinPlate2;
+ maxPlate=kMaxPlate2;
+ minStrip2=kMinStrip2;
+ maxStrip2=kMaxStrip2;
+ minPadz=kMinPadz2;
+ maxPadz=kMaxPadz2;
+ minPadx=kMinPadx2;
+ maxPadx=kMaxPadx2;
+ }
+
+ else if (indexDDL==3){
+ minPlate=kMinPlate3;
+ maxPlate=kMaxPlate3;
+ minStrip2=kMinStrip3;
+ maxStrip2=kMaxStrip3;
+ minPadz=kMinPadz3;
+ maxPadz=kMaxPadz3;
+ minPadx=kMinPadx3;
+ maxPadx=kMaxPadx3;
+ }
+
+ Int_t ichTOF=0;
+
+ Int_t minStrip=0;
+ Int_t maxStrip=18;
+ for (Int_t iPlate=minPlate;iPlate<=maxPlate;iPlate++){
+ if (iPlate==2) {
+ maxStrip = maxStrip2;
+ minStrip = minStrip2;
+ }
+ else {
+ maxStrip = 18;
+ minStrip = 0;
+ }
+ for (Int_t iStrip=minStrip;iStrip<=maxStrip;iStrip++){
+ for (Int_t iPadz=minPadz;iPadz<=maxPadz;iPadz++){
+ for (Int_t iPadx=minPadx;iPadx<=maxPadx;iPadx++){
+ volume[1]=iPlate;
+ volume[2]=iStrip;
+ volume[3]=iPadz;
+ volume[4]=iPadx;
+ if (fVerbose)
+ AliInfo(Form(" volume[0] = %i, volume[1] = %i, volume[2] = %i, volume[3] = %i, volume[4] = %i",volume[0],volume[1],volume[2],volume[3],volume[4]));
+
+ if (indexDDL==0 || indexDDL==2){
+ array[ichTOF]=geom->GetIndex(volume);
+ if (fVerbose)
+ AliInfo(Form(" ichTOF = %i, TOFChannel = %i",ichTOF,array[ichTOF]));
+
+ }
+ else {
+ array[ichTOF]=geom->GetIndex(volume);
+ if (fVerbose)
+ AliInfo(Form(" ichTOF = %i, TOFChannel = %i",ichTOF,array[ichTOF]));
+
+ }
+ ichTOF++;
+ }
+ }
+ }
+ }
+ //AliInfo(Form("ichTOF = %i",ichTOF));
+ if ((indexDDL%2==0 && ichTOF!=2160) ||
+ (indexDDL%2==1 && ichTOF!=2208)) {
+ AliWarning(Form("Something strange occurred, number of entries in array different from expected! Please, check! ichTOF = %i",ichTOF));
+ }
+ return;
+}
+
+//------------------------------------------------------------
+void AliTOFDecoder::PrintStack(const UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh, const AliRawDataHeaderV3 *cdhV3)
+{
+ /* It loops over nWords 32-bit words
+ * starting at *rawData and prints them in 0x format.
+ * It does not decode them!
+ */
+
+ Short_t currentMiniEventID = cdh ? cdh->GetMiniEventID() : (Short_t)(-1);
+ currentMiniEventID = cdhV3 ? cdhV3->GetMiniEventID() : currentMiniEventID;
+ Short_t currentEventID1 = cdh ? cdh->GetEventID1() : (Short_t)(-1);
+ currentEventID1 = cdhV3 ? cdhV3->GetEventID1() : currentEventID1;
+ if (!cdh && !cdhV3)
+ AliWarning("CDH not valid: deltaBunchID not reliable ");
+ else
+ AliDebug(1, Form("EvID1 = %d, EvID2 = %d, currentMiniEventID = %d", currentEventID1, cdh ? cdh->GetEventID2() : cdhV3->GetEventID2(), currentMiniEventID));
+
+ AliInfo("Printing raw data stack for current equipment\n");
+ AliInfo(" wordN - Hex Word ");
+ //loop over raw data
+ for (Int_t iWord = 0; iWord < nWords; iWord++, rawData++){
+ if (iWord<10) AliInfo(Form(" %i - 0x%08x",iWord,*rawData));
+ if (iWord>9 &&iWord<100) AliInfo(Form(" %i - 0x%08x",iWord,*rawData));
+ if (iWord>99) AliInfo(Form(" %i - 0x%08x",iWord,*rawData));
+ }
+ return;
+}