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.                  *
 **************************************************************************/

// $Id$

// By Ch. Finck, Subatech

// 17/03/09  Does not compile

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

#include <Riostream.h>

#include "TExMap.h"
#include "TList.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TFile.h"
#include "TObjArray.h"
#include "TObjString.h"

#include "AliCDBManager.h"
#include "AliMpHelper.h"
#include "AliMpConstants.h"
#include "AliMpDEIterator.h"
#include "AliMpIntPair.h"
#include "AliMpFiles.h"
#include "AliMpSegmentation.h"
#include "AliMpVSegmentation.h"
#include "AliMpDEManager.h"
#include "AliMpDetElement.h"
#include "AliMpDDLStore.h"
#include "AliMpCDB.h"

#endif

const Int_t kStrangeBin = 26;
const Int_t kUndefBin   = 36;
const Int_t kBadCalBin  = 46;
const Int_t kBadBin       = 5;

const Int_t kNotScanSerial  = 40000;

void MUONCheckManu(Int_t iCh = 10, Bool_t rootFile = kFALSE)
{

    // Macro to check the bin number for manu in the CDB for each chamber
    // chamber = 0 means all chambers 
    // The normal bin number ranges from 0-4.
    // the abnormal bin number are as follow:
    // 25 -> strange, 
    // 35 ->undefined to be re-tested, 
    // 45 -> bad calib0,
    // 5-10 -> reading error on manu.
    // cath: 0 -> bending, 1 -> non-bending
    // author: Ch. Finck

    static Int_t nBad    = 0;
    static Int_t nBadS  = 0;
    static Int_t nBadU  = 0;
    static Int_t nDB     = 0;
    static Int_t nManu = 0;
    static Int_t badDE = 0;


    // Load mapping
    if ( !AliMpCDB::LoadMpSegmentation() ) {
       printf("Could not access mapping from OCDB !\n");
    }
    
    // Load DDL store
    if ( !AliMpCDB::LoadDDLStore() ) {
      printf("Could not access DDL Store from OCDB !\n");
      exit(0);
    }
    AliMpDDLStore* ddlStore = AliMpDDLStore::Instance();
			  
    TString fileNameIn;
    TExMap serialNbtoBinId;
    TExMap serialNbtoGain;
    TExMap serial;

    char fileNameOut[255];
    sprintf(fileNameOut,"serial_number_%d.dat",iCh);

    char fileNameOut1[255];
    sprintf(fileNameOut1,"serial_number_bad_%d.dat",iCh);


    char histoFile[255];
    TFile* fileOut = 0x0;

    if (rootFile) {
      sprintf(histoFile,"GainDE_%d.root",iCh);
      fileOut = new TFile(histoFile,"RECREATE","DE manu gain");
    }


    fileNameIn  = AliMpFiles::SerialToBinFilePath();
  
    ifstream in(fileNameIn, ios::in);
    if (!in) printf("file %s not found\n", fileNameIn.Data());

    ofstream out(fileNameOut, ios::out);
  
    ofstream out1(fileNameOut1, ios::out);

    char line[255];
    Int_t binId          = 0;
    Int_t manuSerial = 0;
    Float_t gain        = 0;

    // reading file
    while ( in.getline(line,255) ) {

      if ( line[0] == '#' ) continue;
      if ( line[0] == '\n' ) continue;
      if ( line[0] == '\0' ) continue;

      TString tmp(AliMpHelper::Normalize(line));

      TObjArray* stringList = tmp.Tokenize(TString(" "));

      TString sSM   = ((TObjString*)stringList->At(2))->GetString();

      TString sBin  = ((TObjString*)stringList->At(4))->GetString();

      TString sGain  = ((TObjString*)stringList->At(6))->GetString();

      manuSerial =  atoi(sSM.Data());
      binId  =  atoi(sBin.Data()) + 1;

      if (sBin.CompareTo("S") == 0) {
	binId = kStrangeBin;
      }

      if (sBin.CompareTo("I") == 0) {
	binId = kUndefBin;
      }

      if (sBin.CompareTo("C") == 0) {
	binId = kBadCalBin;
      }

      gain  =  atof(sGain.Data());
      //printf("%s %d   %s %d  %s %f\n", sSM.Data(), manuSerial, sBin.Data(),  binId, sGain.Data(), gain);

      fflush(stdout);

  
      // to avoid that a manu that is at the same time in a normal bin and in a bin S, stays in bin S
      if (serialNbtoBinId.GetValue(manuSerial)  != 0 && binId == kStrangeBin)  
	  continue;
     

      if (serialNbtoBinId.GetValue(manuSerial) != 0) {
	serialNbtoBinId.Remove((Long_t)manuSerial);
	serialNbtoGain.Remove((Long_t)manuSerial);
      }


      serialNbtoBinId.Add((Long_t)manuSerial, (Long_t)binId); 
      serialNbtoGain.Add((Long_t)manuSerial, (Long_t)(gain*100000)); 
      delete stringList;

    }
    in.close();

//  return;

// ///////////
// // iterates over DE
  
    char title[256];
    char name[256];

    AliMpDEIterator it;

    out1 << "Bin:" << endl;
    out1 << "  25 -> Strange, 35 -> re-tested, 45 -> bad calib0" << endl;
    out1 << "  >= 5 error id, 10 -> 1" << endl;
    out1 << "cath: 0 -> bending, 1 -> non-bending" << endl;


    TH1F* hslat_manu_bp[1100];
    TH1F* hslat_manu_nbp[1100];

    TH1F* hCh_manu_bp[11];
    TH1F* hCh_manu_nbp[11];

    static TH1F* hAll_manu_bp;
    static TH1F* hAll_manu_nbp;
    static TH1F* hAll_manu;
    static TH1F* hBinS;

    TH2F* hBin_DE = 0x0;

    if (rootFile) {

	sprintf(name,"hAll_manu_bp");
	sprintf(title,"MANU gain total for bending");
	hAll_manu_bp = new TH1F(name,title,300,1.5,5.0);
	hAll_manu_bp->SetDirectory(fileOut);

	sprintf(name,"hAll_manu_npb");
	sprintf(title,"MANU gain total for non-bending");
	hAll_manu_nbp = new TH1F(name,title,300,1.5,5.0);
	hAll_manu_nbp->SetDirectory(fileOut);

	sprintf(name,"hAll_manu");
	sprintf(title,"MANU gain total");
	hAll_manu = new TH1F(name,title,300,1.5,5.0);
	hAll_manu->SetDirectory(fileOut);

	sprintf(name,"hBin_DE");
	sprintf(title,"DE versus Bin");
	hBin_DE = new TH2F(name,title,5,0,5, 1100, 1, 1100);
	hBin_DE->SetDirectory(fileOut);

	sprintf(name,"hBin_S");
	sprintf(title,"Bin_S");
	hBinS = new TH1F(name,title, 300, 600, 1100);
	hBinS->SetDirectory(fileOut);
    }

    Int_t begCh;
    Int_t endCh;

    if (iCh == 0) {
	begCh = 1;
	endCh = 11;
    } else {
	begCh = iCh;
	endCh = iCh+1;
    }

    for (iCh = begCh; iCh < endCh; ++iCh) {

      if (rootFile) {

	sprintf(name,"hCh_manu_bp_CH%d", iCh);
	sprintf(title,"MANU gain total for CH%d bending", iCh);
	hCh_manu_bp[iCh] = new TH1F(name,title,300,1.5,5.0);
	hCh_manu_bp[iCh]->SetDirectory(fileOut);

	sprintf(name,"hCh_manu_nbp_CH%d", iCh);
	sprintf(title,"MANU gain total for CH%d non-bending", iCh);
	hCh_manu_nbp[iCh] = new TH1F(name,title,300,1.5,5.0);
	hCh_manu_nbp[iCh]->SetDirectory(fileOut);
      }

      for ( it.First(iCh-1); ! it.IsDone(); it.Next() ) {

	Int_t flag = 0;
	Int_t iDE = it.CurrentDE()->GetId();

	AliMpDetElement* detElem =  AliMpDEManager::GetDetElement(iDE);
	TString nameDE = detElem->GetDEName();

	out << endl;
	out << " DE: " << iDE << endl;
	out << "manuId  serial  binId" << endl;

	out1 << endl;
	out1 << " DE: " << iDE << " name: " << nameDE.Data() << endl;
	out1 << "manuId  serial  binId cath" << endl;

	printf("\nDE:%d\n", iDE);

	if (rootFile) {

	  sprintf(name,"hslat_manu_bp%d",iDE);
	  sprintf(title,"MANU gain for DE %d bending",iDE);
	  hslat_manu_bp[iDE] = new TH1F(name,title,300,1.5,4.5);
	  hslat_manu_bp[iDE]->SetDirectory(fileOut);

	  sprintf(name,"hslat_manu_nbp%d",iDE);
	  sprintf(title,"MANU gain for DE %d non-bending",iDE);
	  hslat_manu_nbp[iDE] = new TH1F(name,title,300,1.5,4.5);
	  hslat_manu_nbp[iDE]->SetDirectory(fileOut);
	}

	TList manuList;

	for ( Int_t cath = 0; cath <=1 ; ++cath ) {
	  const AliMpVSegmentation* seg 
	      = AliMpSegmentation::Instance()->GetMpSegmentation(iDE,AliMp::GetCathodType(cath));
        
	  TArrayI manus;

	  seg->GetAllElectronicCardIDs(manus);
          
	  // filling
	  for ( Int_t im = 0; im < manus.GetSize(); ++im ) {
	    AliMpIntPair* manu = 0x0;
	    if (manus[im] > AliMpConstants::ManuMask(AliMp::kNonBendingPlane))
		manu = new AliMpIntPair(manus[im], 1, kTRUE);
	    else
		manu = new AliMpIntPair(manus[im], 0, kTRUE);

	    manuList.Add(manu);
	  }

	}
	manuList.Sort();
   

	// check manu serial
	for (Int_t iEntry = 0; iEntry < manuList.GetEntries(); ++iEntry) {
	  AliMpIntPair* manuPtr = (AliMpIntPair*)manuList.At(iEntry);

	  AliMpDetElement* detElem =  ddlStore->GetDetElement(iDE);
	  manuSerial = detElem->GetManuSerialFromId(manuPtr->GetFirst());

	  binId =  (Int_t)serialNbtoBinId.GetValue(manuSerial);
	  if (manuSerial == 0) {
	    printf("manu %d not found in mapping\n",manuPtr->GetFirst()); 
	    continue;
	  }
	  if (manuSerial != 0)
	      nManu++;

	  if (!binId) {
	    printf("Bin for manu %d with serial %d not available\n",manuPtr->GetFirst(), manuSerial); 
	  }
	  if (binId > kBadBin && binId < kStrangeBin)
	      printf("Bin for manu %d with serial %d is bad\n",manuPtr->GetFirst(), manuSerial); 

	  if (binId == kStrangeBin)
	      printf("Bin for manu %d with serial %d is strange\n",manuPtr->GetFirst(), manuSerial); 

	  if (binId == kUndefBin)
	      printf("Bin for manu %d with serial %d is unidentified\n",manuPtr->GetFirst(), manuSerial); 

	  gain  =  (Float_t)(serialNbtoGain.GetValue(manuSerial)/100000.);

	  out  << setw(4) << ( manuPtr->GetFirst() & 0x3FF) << " " << setw(5) << manuSerial 
	       << " " << setw(2) << binId-1 << " " <<   manuPtr->GetSecond() 
	       << " " << setw(7) << gain << endl;

	  // bad manu
	  if ((binId == 0 || binId == kUndefBin) && manuSerial < kNotScanSerial) nBadU++;
	  if (binId == 0 && manuSerial >= kNotScanSerial) nDB++;

	  // check whether serial number appears twice
	  if (serial.GetValue(manuSerial) == 0) 
	    serial.Add((Long_t)manuSerial, (Long_t)binId);
	  else {
	    out1 << setw(4) << ( manuPtr->GetFirst() & 0x3FF) << " " << setw(5) << manuSerial 
		   << " " << setw(2) << binId-1 << " " <<   manuPtr->GetSecond() 
		   << " " << setw(7) << gain << " Serial number Twice" << endl;  
	  }

	  // count bad/strange manus
	  if (!binId || binId > kBadBin) {
	    if (binId == kStrangeBin) nBadS++;
	    if (binId > kBadBin) {
	      nBad++;
	      flag = 1;
	    }

	    out1 << setw(4) << ( manuPtr->GetFirst() & 0x3FF) << " " << setw(5) << manuSerial 
		 << " " << setw(2) << binId-1 << " " <<   manuPtr->GetSecond() 
		 << " " << setw(7) << gain << endl;
	  }

	  if (rootFile && binId == kStrangeBin) 
	      hBinS->Fill(iDE);

	  if (rootFile && binId != kStrangeBin) {
	    hAll_manu->Fill(gain);
	    hBin_DE->Fill(binId-1, iDE);

	    if(manuPtr->GetSecond()) {
		hslat_manu_nbp[iDE]->Fill(gain);
		hAll_manu_nbp->Fill(gain);
		hCh_manu_nbp[iCh]->Fill(gain);
	    } else {
		hslat_manu_bp[iDE]->Fill(gain);
		hAll_manu_bp->Fill(gain);
		hCh_manu_bp[iCh]->Fill(gain);
	    }
	
	  }
	} // manu

	if (flag) badDE++;

	manuList.Delete();
      }// DE

    } // ich

    serialNbtoBinId.Delete();
    serialNbtoGain.Delete();

    if (rootFile) {
      fileOut->Write();
      fileOut->Close();
    }
    
    out.close();
    out1.close();

    printf("\n");
    printf("Number of bad manus %d and strange manus %d total %d\n", nBad, nBadS, nManu);
    printf("Number of unidentified manus %d\n", nBadU);
    printf("Number of manus not scanned %d\n", nDB);
    printf("Number of bad DE %d\n", badDE);
}

 MUONCheckManu.C:1
 MUONCheckManu.C:2
 MUONCheckManu.C:3
 MUONCheckManu.C:4
 MUONCheckManu.C:5
 MUONCheckManu.C:6
 MUONCheckManu.C:7
 MUONCheckManu.C:8
 MUONCheckManu.C:9
 MUONCheckManu.C:10
 MUONCheckManu.C:11
 MUONCheckManu.C:12
 MUONCheckManu.C:13
 MUONCheckManu.C:14
 MUONCheckManu.C:15
 MUONCheckManu.C:16
 MUONCheckManu.C:17
 MUONCheckManu.C:18
 MUONCheckManu.C:19
 MUONCheckManu.C:20
 MUONCheckManu.C:21
 MUONCheckManu.C:22
 MUONCheckManu.C:23
 MUONCheckManu.C:24
 MUONCheckManu.C:25
 MUONCheckManu.C:26
 MUONCheckManu.C:27
 MUONCheckManu.C:28
 MUONCheckManu.C:29
 MUONCheckManu.C:30
 MUONCheckManu.C:31
 MUONCheckManu.C:32
 MUONCheckManu.C:33
 MUONCheckManu.C:34
 MUONCheckManu.C:35
 MUONCheckManu.C:36
 MUONCheckManu.C:37
 MUONCheckManu.C:38
 MUONCheckManu.C:39
 MUONCheckManu.C:40
 MUONCheckManu.C:41
 MUONCheckManu.C:42
 MUONCheckManu.C:43
 MUONCheckManu.C:44
 MUONCheckManu.C:45
 MUONCheckManu.C:46
 MUONCheckManu.C:47
 MUONCheckManu.C:48
 MUONCheckManu.C:49
 MUONCheckManu.C:50
 MUONCheckManu.C:51
 MUONCheckManu.C:52
 MUONCheckManu.C:53
 MUONCheckManu.C:54
 MUONCheckManu.C:55
 MUONCheckManu.C:56
 MUONCheckManu.C:57
 MUONCheckManu.C:58
 MUONCheckManu.C:59
 MUONCheckManu.C:60
 MUONCheckManu.C:61
 MUONCheckManu.C:62
 MUONCheckManu.C:63
 MUONCheckManu.C:64
 MUONCheckManu.C:65
 MUONCheckManu.C:66
 MUONCheckManu.C:67
 MUONCheckManu.C:68
 MUONCheckManu.C:69
 MUONCheckManu.C:70
 MUONCheckManu.C:71
 MUONCheckManu.C:72
 MUONCheckManu.C:73
 MUONCheckManu.C:74
 MUONCheckManu.C:75
 MUONCheckManu.C:76
 MUONCheckManu.C:77
 MUONCheckManu.C:78
 MUONCheckManu.C:79
 MUONCheckManu.C:80
 MUONCheckManu.C:81
 MUONCheckManu.C:82
 MUONCheckManu.C:83
 MUONCheckManu.C:84
 MUONCheckManu.C:85
 MUONCheckManu.C:86
 MUONCheckManu.C:87
 MUONCheckManu.C:88
 MUONCheckManu.C:89
 MUONCheckManu.C:90
 MUONCheckManu.C:91
 MUONCheckManu.C:92
 MUONCheckManu.C:93
 MUONCheckManu.C:94
 MUONCheckManu.C:95
 MUONCheckManu.C:96
 MUONCheckManu.C:97
 MUONCheckManu.C:98
 MUONCheckManu.C:99
 MUONCheckManu.C:100
 MUONCheckManu.C:101
 MUONCheckManu.C:102
 MUONCheckManu.C:103
 MUONCheckManu.C:104
 MUONCheckManu.C:105
 MUONCheckManu.C:106
 MUONCheckManu.C:107
 MUONCheckManu.C:108
 MUONCheckManu.C:109
 MUONCheckManu.C:110
 MUONCheckManu.C:111
 MUONCheckManu.C:112
 MUONCheckManu.C:113
 MUONCheckManu.C:114
 MUONCheckManu.C:115
 MUONCheckManu.C:116
 MUONCheckManu.C:117
 MUONCheckManu.C:118
 MUONCheckManu.C:119
 MUONCheckManu.C:120
 MUONCheckManu.C:121
 MUONCheckManu.C:122
 MUONCheckManu.C:123
 MUONCheckManu.C:124
 MUONCheckManu.C:125
 MUONCheckManu.C:126
 MUONCheckManu.C:127
 MUONCheckManu.C:128
 MUONCheckManu.C:129
 MUONCheckManu.C:130
 MUONCheckManu.C:131
 MUONCheckManu.C:132
 MUONCheckManu.C:133
 MUONCheckManu.C:134
 MUONCheckManu.C:135
 MUONCheckManu.C:136
 MUONCheckManu.C:137
 MUONCheckManu.C:138
 MUONCheckManu.C:139
 MUONCheckManu.C:140
 MUONCheckManu.C:141
 MUONCheckManu.C:142
 MUONCheckManu.C:143
 MUONCheckManu.C:144
 MUONCheckManu.C:145
 MUONCheckManu.C:146
 MUONCheckManu.C:147
 MUONCheckManu.C:148
 MUONCheckManu.C:149
 MUONCheckManu.C:150
 MUONCheckManu.C:151
 MUONCheckManu.C:152
 MUONCheckManu.C:153
 MUONCheckManu.C:154
 MUONCheckManu.C:155
 MUONCheckManu.C:156
 MUONCheckManu.C:157
 MUONCheckManu.C:158
 MUONCheckManu.C:159
 MUONCheckManu.C:160
 MUONCheckManu.C:161
 MUONCheckManu.C:162
 MUONCheckManu.C:163
 MUONCheckManu.C:164
 MUONCheckManu.C:165
 MUONCheckManu.C:166
 MUONCheckManu.C:167
 MUONCheckManu.C:168
 MUONCheckManu.C:169
 MUONCheckManu.C:170
 MUONCheckManu.C:171
 MUONCheckManu.C:172
 MUONCheckManu.C:173
 MUONCheckManu.C:174
 MUONCheckManu.C:175
 MUONCheckManu.C:176
 MUONCheckManu.C:177
 MUONCheckManu.C:178
 MUONCheckManu.C:179
 MUONCheckManu.C:180
 MUONCheckManu.C:181
 MUONCheckManu.C:182
 MUONCheckManu.C:183
 MUONCheckManu.C:184
 MUONCheckManu.C:185
 MUONCheckManu.C:186
 MUONCheckManu.C:187
 MUONCheckManu.C:188
 MUONCheckManu.C:189
 MUONCheckManu.C:190
 MUONCheckManu.C:191
 MUONCheckManu.C:192
 MUONCheckManu.C:193
 MUONCheckManu.C:194
 MUONCheckManu.C:195
 MUONCheckManu.C:196
 MUONCheckManu.C:197
 MUONCheckManu.C:198
 MUONCheckManu.C:199
 MUONCheckManu.C:200
 MUONCheckManu.C:201
 MUONCheckManu.C:202
 MUONCheckManu.C:203
 MUONCheckManu.C:204
 MUONCheckManu.C:205
 MUONCheckManu.C:206
 MUONCheckManu.C:207
 MUONCheckManu.C:208
 MUONCheckManu.C:209
 MUONCheckManu.C:210
 MUONCheckManu.C:211
 MUONCheckManu.C:212
 MUONCheckManu.C:213
 MUONCheckManu.C:214
 MUONCheckManu.C:215
 MUONCheckManu.C:216
 MUONCheckManu.C:217
 MUONCheckManu.C:218
 MUONCheckManu.C:219
 MUONCheckManu.C:220
 MUONCheckManu.C:221
 MUONCheckManu.C:222
 MUONCheckManu.C:223
 MUONCheckManu.C:224
 MUONCheckManu.C:225
 MUONCheckManu.C:226
 MUONCheckManu.C:227
 MUONCheckManu.C:228
 MUONCheckManu.C:229
 MUONCheckManu.C:230
 MUONCheckManu.C:231
 MUONCheckManu.C:232
 MUONCheckManu.C:233
 MUONCheckManu.C:234
 MUONCheckManu.C:235
 MUONCheckManu.C:236
 MUONCheckManu.C:237
 MUONCheckManu.C:238
 MUONCheckManu.C:239
 MUONCheckManu.C:240
 MUONCheckManu.C:241
 MUONCheckManu.C:242
 MUONCheckManu.C:243
 MUONCheckManu.C:244
 MUONCheckManu.C:245
 MUONCheckManu.C:246
 MUONCheckManu.C:247
 MUONCheckManu.C:248
 MUONCheckManu.C:249
 MUONCheckManu.C:250
 MUONCheckManu.C:251
 MUONCheckManu.C:252
 MUONCheckManu.C:253
 MUONCheckManu.C:254
 MUONCheckManu.C:255
 MUONCheckManu.C:256
 MUONCheckManu.C:257
 MUONCheckManu.C:258
 MUONCheckManu.C:259
 MUONCheckManu.C:260
 MUONCheckManu.C:261
 MUONCheckManu.C:262
 MUONCheckManu.C:263
 MUONCheckManu.C:264
 MUONCheckManu.C:265
 MUONCheckManu.C:266
 MUONCheckManu.C:267
 MUONCheckManu.C:268
 MUONCheckManu.C:269
 MUONCheckManu.C:270
 MUONCheckManu.C:271
 MUONCheckManu.C:272
 MUONCheckManu.C:273
 MUONCheckManu.C:274
 MUONCheckManu.C:275
 MUONCheckManu.C:276
 MUONCheckManu.C:277
 MUONCheckManu.C:278
 MUONCheckManu.C:279
 MUONCheckManu.C:280
 MUONCheckManu.C:281
 MUONCheckManu.C:282
 MUONCheckManu.C:283
 MUONCheckManu.C:284
 MUONCheckManu.C:285
 MUONCheckManu.C:286
 MUONCheckManu.C:287
 MUONCheckManu.C:288
 MUONCheckManu.C:289
 MUONCheckManu.C:290
 MUONCheckManu.C:291
 MUONCheckManu.C:292
 MUONCheckManu.C:293
 MUONCheckManu.C:294
 MUONCheckManu.C:295
 MUONCheckManu.C:296
 MUONCheckManu.C:297
 MUONCheckManu.C:298
 MUONCheckManu.C:299
 MUONCheckManu.C:300
 MUONCheckManu.C:301
 MUONCheckManu.C:302
 MUONCheckManu.C:303
 MUONCheckManu.C:304
 MUONCheckManu.C:305
 MUONCheckManu.C:306
 MUONCheckManu.C:307
 MUONCheckManu.C:308
 MUONCheckManu.C:309
 MUONCheckManu.C:310
 MUONCheckManu.C:311
 MUONCheckManu.C:312
 MUONCheckManu.C:313
 MUONCheckManu.C:314
 MUONCheckManu.C:315
 MUONCheckManu.C:316
 MUONCheckManu.C:317
 MUONCheckManu.C:318
 MUONCheckManu.C:319
 MUONCheckManu.C:320
 MUONCheckManu.C:321
 MUONCheckManu.C:322
 MUONCheckManu.C:323
 MUONCheckManu.C:324
 MUONCheckManu.C:325
 MUONCheckManu.C:326
 MUONCheckManu.C:327
 MUONCheckManu.C:328
 MUONCheckManu.C:329
 MUONCheckManu.C:330
 MUONCheckManu.C:331
 MUONCheckManu.C:332
 MUONCheckManu.C:333
 MUONCheckManu.C:334
 MUONCheckManu.C:335
 MUONCheckManu.C:336
 MUONCheckManu.C:337
 MUONCheckManu.C:338
 MUONCheckManu.C:339
 MUONCheckManu.C:340
 MUONCheckManu.C:341
 MUONCheckManu.C:342
 MUONCheckManu.C:343
 MUONCheckManu.C:344
 MUONCheckManu.C:345
 MUONCheckManu.C:346
 MUONCheckManu.C:347
 MUONCheckManu.C:348
 MUONCheckManu.C:349
 MUONCheckManu.C:350
 MUONCheckManu.C:351
 MUONCheckManu.C:352
 MUONCheckManu.C:353
 MUONCheckManu.C:354
 MUONCheckManu.C:355
 MUONCheckManu.C:356
 MUONCheckManu.C:357
 MUONCheckManu.C:358
 MUONCheckManu.C:359
 MUONCheckManu.C:360
 MUONCheckManu.C:361
 MUONCheckManu.C:362
 MUONCheckManu.C:363
 MUONCheckManu.C:364
 MUONCheckManu.C:365
 MUONCheckManu.C:366
 MUONCheckManu.C:367
 MUONCheckManu.C:368
 MUONCheckManu.C:369
 MUONCheckManu.C:370
 MUONCheckManu.C:371
 MUONCheckManu.C:372
 MUONCheckManu.C:373
 MUONCheckManu.C:374
 MUONCheckManu.C:375
 MUONCheckManu.C:376
 MUONCheckManu.C:377
 MUONCheckManu.C:378
 MUONCheckManu.C:379
 MUONCheckManu.C:380
 MUONCheckManu.C:381
 MUONCheckManu.C:382
 MUONCheckManu.C:383
 MUONCheckManu.C:384
 MUONCheckManu.C:385
 MUONCheckManu.C:386
 MUONCheckManu.C:387
 MUONCheckManu.C:388
 MUONCheckManu.C:389
 MUONCheckManu.C:390
 MUONCheckManu.C:391
 MUONCheckManu.C:392
 MUONCheckManu.C:393
 MUONCheckManu.C:394
 MUONCheckManu.C:395
 MUONCheckManu.C:396
 MUONCheckManu.C:397
 MUONCheckManu.C:398
 MUONCheckManu.C:399
 MUONCheckManu.C:400
 MUONCheckManu.C:401
 MUONCheckManu.C:402
 MUONCheckManu.C:403
 MUONCheckManu.C:404
 MUONCheckManu.C:405
 MUONCheckManu.C:406
 MUONCheckManu.C:407
 MUONCheckManu.C:408
 MUONCheckManu.C:409
 MUONCheckManu.C:410
 MUONCheckManu.C:411
 MUONCheckManu.C:412
 MUONCheckManu.C:413
 MUONCheckManu.C:414
 MUONCheckManu.C:415
 MUONCheckManu.C:416
 MUONCheckManu.C:417
 MUONCheckManu.C:418
 MUONCheckManu.C:419
 MUONCheckManu.C:420
 MUONCheckManu.C:421
 MUONCheckManu.C:422
 MUONCheckManu.C:423
 MUONCheckManu.C:424