ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


//
//
#if !defined(__CINT__) || defined(__MAKECINT__)

#include <stdio.h>
#include "TString.h"
#include "AliMpDDLStore.h"
#include "AliMpDDL.h"
#include "AliMpTriggerCrate.h"
#include "AliMpLocalBoard.h"
#include "AliMpCDB.h"

#endif


// Macro to generate regionnal file for Mtg package (online) from AliRoot trigger mapping
// Ch. Finck (20.08.07)

void MUONGenerateMtgRegFile(Int_t mode = 2, Int_t coinc = 0, UInt_t defaultMask = 0xFFFF, 
			    Int_t version = 20, TString name =  "MtgRegionalCrate" )
{
    // mode = 0,1; 2; 3 -> writing mode no filter; mask; overwrite
    // coinc = 0,1 -> coincidence 3/4, 4/4

    UInt_t mask;
    
    TString fileName = name + Form("-%d", version) + ".dat";
    // Load DDL store
    if ( !AliMpCDB::LoadDDLStore() ) {
      printf("Could not access DDL Store from OCDB !\n");
    }

    FILE* fp = fopen(fileName.Data(), "w");
    // instanciate the elec. mapping class
    AliMpDDLStore* ddlStore = AliMpDDLStore::Instance();

    // loop over the trigger DDL (Right: 20, Left: 21)
    for (Int_t iDDL = 20; iDDL <= 21; ++iDDL) {

      // get ddl object
      AliMpDDL* ddl = ddlStore->GetDDL(iDDL);

      Int_t nCrate = ddl->GetNofTriggerCrates();
    
      // loop over the number of crate in DDL
      for (Int_t index = 0; index < nCrate; ++index) {

	// get crate object
	AliMpTriggerCrate* crate = ddlStore->GetTriggerCrate(iDDL, index);
	fprintf(fp, "%s\n", crate->GetName());
	fprintf(fp, "%02x\n", index + (iDDL-20)*8);
	fprintf(fp, "%d\n", mode);
	fprintf(fp, "%d\n", coinc);

	if (index == 7)
	    mask = 0x1ff;
	else
	    mask = defaultMask;
	fprintf(fp, "%04x\n", mask);

	Int_t nLocal = crate->GetNofLocalBoards();

	for (Int_t iLocal = 0; iLocal  < nLocal; ++iLocal) {

	  // get local board Id from crate object
	  Int_t localId = crate->GetLocalBoardId(iLocal);

	  // get local board object
	  AliMpLocalBoard* localBoard = ddlStore->GetLocalBoard(localId);

	  // print out some info from local board
          fprintf(fp, "%02d %s %03d %03x\n", localBoard->GetSlot(), localBoard->GetName(), 
                  localId, localBoard->GetSwitch());
          
          // print DE id
          fprintf(fp, " ");
          for (Int_t i = 0; i < localBoard->GetNofDEs(); ++i)
            fprintf(fp, "%4d ", localBoard->GetDEId(i));
          fprintf(fp, "\n");
          
          // print copy card numbers
          fprintf(fp, " %4d %4d", localBoard->GetInputXfrom(), localBoard->GetInputXto());
          fprintf(fp, " %4d %4d", localBoard->GetInputYfrom(), localBoard->GetInputYto());
          fprintf(fp, " %4d\n",   localBoard->GetTC());
	}
      }
    }
    fclose(fp);
}

 MUONGenerateMtgRegFile.C:1
 MUONGenerateMtgRegFile.C:2
 MUONGenerateMtgRegFile.C:3
 MUONGenerateMtgRegFile.C:4
 MUONGenerateMtgRegFile.C:5
 MUONGenerateMtgRegFile.C:6
 MUONGenerateMtgRegFile.C:7
 MUONGenerateMtgRegFile.C:8
 MUONGenerateMtgRegFile.C:9
 MUONGenerateMtgRegFile.C:10
 MUONGenerateMtgRegFile.C:11
 MUONGenerateMtgRegFile.C:12
 MUONGenerateMtgRegFile.C:13
 MUONGenerateMtgRegFile.C:14
 MUONGenerateMtgRegFile.C:15
 MUONGenerateMtgRegFile.C:16
 MUONGenerateMtgRegFile.C:17
 MUONGenerateMtgRegFile.C:18
 MUONGenerateMtgRegFile.C:19
 MUONGenerateMtgRegFile.C:20
 MUONGenerateMtgRegFile.C:21
 MUONGenerateMtgRegFile.C:22
 MUONGenerateMtgRegFile.C:23
 MUONGenerateMtgRegFile.C:24
 MUONGenerateMtgRegFile.C:25
 MUONGenerateMtgRegFile.C:26
 MUONGenerateMtgRegFile.C:27
 MUONGenerateMtgRegFile.C:28
 MUONGenerateMtgRegFile.C:29
 MUONGenerateMtgRegFile.C:30
 MUONGenerateMtgRegFile.C:31
 MUONGenerateMtgRegFile.C:32
 MUONGenerateMtgRegFile.C:33
 MUONGenerateMtgRegFile.C:34
 MUONGenerateMtgRegFile.C:35
 MUONGenerateMtgRegFile.C:36
 MUONGenerateMtgRegFile.C:37
 MUONGenerateMtgRegFile.C:38
 MUONGenerateMtgRegFile.C:39
 MUONGenerateMtgRegFile.C:40
 MUONGenerateMtgRegFile.C:41
 MUONGenerateMtgRegFile.C:42
 MUONGenerateMtgRegFile.C:43
 MUONGenerateMtgRegFile.C:44
 MUONGenerateMtgRegFile.C:45
 MUONGenerateMtgRegFile.C:46
 MUONGenerateMtgRegFile.C:47
 MUONGenerateMtgRegFile.C:48
 MUONGenerateMtgRegFile.C:49
 MUONGenerateMtgRegFile.C:50
 MUONGenerateMtgRegFile.C:51
 MUONGenerateMtgRegFile.C:52
 MUONGenerateMtgRegFile.C:53
 MUONGenerateMtgRegFile.C:54
 MUONGenerateMtgRegFile.C:55
 MUONGenerateMtgRegFile.C:56
 MUONGenerateMtgRegFile.C:57
 MUONGenerateMtgRegFile.C:58
 MUONGenerateMtgRegFile.C:59
 MUONGenerateMtgRegFile.C:60
 MUONGenerateMtgRegFile.C:61
 MUONGenerateMtgRegFile.C:62
 MUONGenerateMtgRegFile.C:63
 MUONGenerateMtgRegFile.C:64
 MUONGenerateMtgRegFile.C:65
 MUONGenerateMtgRegFile.C:66
 MUONGenerateMtgRegFile.C:67
 MUONGenerateMtgRegFile.C:68
 MUONGenerateMtgRegFile.C:69
 MUONGenerateMtgRegFile.C:70
 MUONGenerateMtgRegFile.C:71
 MUONGenerateMtgRegFile.C:72
 MUONGenerateMtgRegFile.C:73
 MUONGenerateMtgRegFile.C:74
 MUONGenerateMtgRegFile.C:75
 MUONGenerateMtgRegFile.C:76
 MUONGenerateMtgRegFile.C:77
 MUONGenerateMtgRegFile.C:78
 MUONGenerateMtgRegFile.C:79
 MUONGenerateMtgRegFile.C:80
 MUONGenerateMtgRegFile.C:81
 MUONGenerateMtgRegFile.C:82
 MUONGenerateMtgRegFile.C:83
 MUONGenerateMtgRegFile.C:84
 MUONGenerateMtgRegFile.C:85
 MUONGenerateMtgRegFile.C:86
 MUONGenerateMtgRegFile.C:87
 MUONGenerateMtgRegFile.C:88
 MUONGenerateMtgRegFile.C:89
 MUONGenerateMtgRegFile.C:90
 MUONGenerateMtgRegFile.C:91
 MUONGenerateMtgRegFile.C:92
 MUONGenerateMtgRegFile.C:93
 MUONGenerateMtgRegFile.C:94
 MUONGenerateMtgRegFile.C:95
 MUONGenerateMtgRegFile.C:96
 MUONGenerateMtgRegFile.C:97
 MUONGenerateMtgRegFile.C:98
 MUONGenerateMtgRegFile.C:99
 MUONGenerateMtgRegFile.C:100
 MUONGenerateMtgRegFile.C:101
 MUONGenerateMtgRegFile.C:102
 MUONGenerateMtgRegFile.C:103
 MUONGenerateMtgRegFile.C:104
 MUONGenerateMtgRegFile.C:105
 MUONGenerateMtgRegFile.C:106
 MUONGenerateMtgRegFile.C:107