ROOT logo
// $Id$
//--------------------------------------------------
// Example macro to do Calorimeters filtering
// copy ESDs into AODs
//
// Pay attention to the options and definitions
// set in the lines below
//
//  Author : Gustavo Conesa Balbastre (INFN-LNF)
//
//-------------------------------------------------
enum anaModes {mLocal, mLocalCAF,mPROOF,mGRID};
//mLocal: Analyze locally files in your computer
//mLocalCAF: Analyze locally CAF files
//mPROOF: Analyze CAF files with PROOF

//---------------------------------------------------------------------------
//Settings to read locally several files, only for "mLocal" mode
//The different values are default, they can be set with environmental 
//variables: INDIR, PATTERN, NFILES, respectivelly
char * kInDir = "/Users/Gustavo/Work/data/134908/pass1"; 
//char * kInDir = "/Users/Gustavo/Work/data/137366/";
char * kPattern = ""; // Data are in files kInDir/kPattern+i 
Int_t kFile = 1; // Number of files
//---------------------------------------------------------------------------
//Collection file for grid analysis
char * kXML = "collection.xml";
//---------------------------------------------------------------------------

TString kInputData = "AOD"; //ESD, AOD, MC
TString kTreeName = "esdTree";
Bool_t kUsePhysSel = kFALSE;
Bool_t kEmbed = kTRUE;

void emcalReclusterize(Int_t mode=mLocal)
{
  // Main
  //char cmd[200] ; 
  //sprintf(cmd, ".! rm -rf outputAOD.root") ; 
  //gROOT->ProcessLine(cmd) ; 
  //--------------------------------------------------------------------
  // Load analysis libraries
  // Look at the method below, 
  // change whatever you need for your analysis case
  // ------------------------------------------------------------------
  LoadLibraries(mode) ;
  
  //-------------------------------------------------------------------------------------------------
  //Create chain from ESD and from cross sections files, look below for options.
  //-------------------------------------------------------------------------------------------------
  if(kInputData == "ESD")      kTreeName = "esdTree" ;
  else if(kInputData == "AOD") kTreeName = "aodTree" ;
  else {
    cout<<"Wrong  data type "<<kInputData<<endl;
    break;
  }
  
  TChain *chain       = new TChain(kTreeName) ;
  CreateChain(mode, chain);  
  
  if(chain){
    AliLog::SetGlobalLogLevel(AliLog::kError);//Minimum prints on screen
    
    //--------------------------------------
    // Make the analysis manager
    //-------------------------------------
    AliAnalysisManager *mgr  = new AliAnalysisManager("Manager", "Manager");
    
    // AOD output handler
    AliAODHandler* aodoutHandler   = new AliAODHandler();
    aodoutHandler->SetOutputFileName("outputAOD.root");
    if(kEmbed){
      aodoutHandler->SetCreateNonStandardAOD();
      kInputData = "AOD";
    }
    mgr->SetOutputEventHandler(aodoutHandler);
    

    //input
    if(kInputData == "ESD")
    {
      // ESD handler
      AliESDInputHandler *esdHandler = new AliESDInputHandler();
      mgr->SetInputEventHandler(esdHandler);
      esdHandler->SetReadFriends(kFALSE);
      cout<<"ESD handler "<<mgr->GetInputEventHandler()<<endl;
    }
    if(kInputData == "AOD")
    {
      // AOD handler
      AliAODInputHandler *aodHandler = new AliAODInputHandler();
      mgr->SetInputEventHandler(aodHandler);
      if(kEmbed){
        aodHandler->SetMergeEvents(kTRUE);
        aodHandler->AddFriend("AliAOD.root");
      }
      
      cout<<"AOD handler "<<mgr->GetInputEventHandler()<<endl;
      
    }
    
    //mgr->SetDebugLevel(1);
    
    //-------------------------------------------------------------------------
    //Define task, put here any other task that you want to use.
    //-------------------------------------------------------------------------
    AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
    AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
    
    // ESD physics selection task
    if(kInputData == "ESD" && kUsePhysSel){
      gROOT->LoadMacro("AddTaskPhysicsSelection.C");
      AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
    }
    
    gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEMCALClusterize.C"); 
    
    Bool_t kMC = kFALSE; // extra checks in case of MC analysis
    Bool_t outAOD = kFALSE ; // Generate output AOD with new clusters
    Bool_t calibEE = kTRUE; // It is set automatically, but here we force to use it or not in any case
    Bool_t calibTT = kTRUE; // It is set automatically, but here we force to use it or not in any case
    if(kRun < 122195 || (kRun > 126437 && kRun < 136851) || kMC) calibTT=kFALSE ; // Recalibration parameters not available for LHC10a,b,c,e,f,g
    Bool_t badMap  = kTRUE; // It is set automatically, but here we force to use it or not in any case  
    Bool_t  clTM      = kTRUE;
    Bool_t  exo       = kTRUE;  // Remove exotic cells
    Bool_t  clnonlin  = kTRUE;  // Apply non linearity (clusterization)
    Int_t   minEcell  = 50;     // 50  MeV (10 MeV used in reconstruction)
    Int_t   minEseed  = 100;    // 100 MeV
    Int_t   dTime     = 0;      // default, 250 ns
    Int_t   wTime     = 30;     // default 425 < T < 825 ns, careful if time calibration is on
    Int_t   unfMinE   = 15;     // Remove cells with less than 15 MeV from cluster after unfolding
    Int_t   unfFrac   = 1;      // Remove cells with less than 1% of cluster energy after unfolding
    
    TString arrayName = "";
    TString clusterzerName = "V1"; // "V2", "NxN","V1Unfold"
    
    AliAnalysisTaskEMCALClusterize * clv1 = AddTaskEMCALClusterize(arrayNameV1,outAOD,kMC,exo,clusterizerName,clTrigger, clTM,
                                                                   minEcell,minEseed,dTime,wTime,unfMinE,unfFrac,
                                                                   calibEnergy,badMap,calibTime,nonlinear);
    
    //    AliAnalysisTaskEMCALClusterize * clusterize = new AliAnalysisTaskEMCALClusterize();
//    clusterize->SetConfigFileName("ConfigEMCALClusterize.C");
//    clusterize->SetOCDBPath("local://$ALICE_ROOT/OCDB");
//    mgr->AddTask(clusterize);
//    
//    // Create containers for input/output
//    AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer()  ;
//    AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer() ;
//    
//    mgr->ConnectInput  (clusterize, 0,  cinput1 );
//    mgr->ConnectOutput (clusterize, 0, coutput1 );
    
    //-----------------------
    // Run the analysis
    //-----------------------    
    TString smode = "";
    if (mode==mLocal || mode == mLocalCAF) 
      smode = "local";
    else if (mode==mPROOF) 
      smode = "proof";
    else if (mode==mGRID) 
      smode = "local";
    
    mgr->InitAnalysis();
    mgr->PrintStatus();
    mgr->StartAnalysis(smode.Data(),chain);
    
    cout <<" Analysis ended sucessfully "<< endl ;
    
  }
  else cout << "Chain was not produced ! "<<endl;
  
}

void  LoadLibraries(const anaModes mode) {
  
  //--------------------------------------
  // Load the needed libraries most of them already loaded by aliroot
  //--------------------------------------
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libXMLIO.so");
  gSystem->Load("libMatrix.so");
  gSystem->Load("libPhysics.so");  

  //----------------------------------------------------------
  // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< 
  //----------------------------------------------------------
  if (mode==mLocal || mode == mLocalCAF || mode == mGRID) {
    //--------------------------------------------------------
    // If you want to use already compiled libraries 
    // in the aliroot distribution
    //--------------------------------------------------------

    gSystem->Load("libSTEERBase.so");
    gSystem->Load("libESD.so");
    gSystem->Load("libAOD.so");
    gSystem->Load("libANALYSIS.so");
    gSystem->Load("libANALYSISalice.so");
    gSystem->Load("libANALYSISalice.so");

    //SetupPar("EMCALUtils"); 
    //SetupPar("PWGEMCAL");
    //SetupPar("PWGGAEMCALTasks"); 
    
    gSystem->Load("libEMCALUtils.so");  
    gSystem->Load("libPWGEMCAL");
    gSystem->Load("libPWGGAEMCALTasks.so");
   
  }

  //---------------------------------------------------------
  // <<<<<<<<<< PROOF mode >>>>>>>>>>>>
  //---------------------------------------------------------
  else if (mode==mPROOF) {
    //
    // Connect to proof
    // Put appropriate username here
    // TProof::Reset("proof://mgheata@lxb6046.cern.ch"); 
    TProof::Open("proof://mgheata@lxb6046.cern.ch");
    
    //    gProof->ClearPackages();
    //    gProof->ClearPackage("ESD");
    //    gProof->ClearPackage("AOD");
    //    gProof->ClearPackage("ANALYSIS");   
    
    // Enable the STEERBase Package
    gProof->UploadPackage("STEERBase.par");
    gProof->EnablePackage("STEERBase");
    // Enable the ESD Package
    gProof->UploadPackage("ESD.par");
    gProof->EnablePackage("ESD");
    // Enable the AOD Package
    gProof->UploadPackage("AOD.par");
    gProof->EnablePackage("AOD");
    // Enable the Analysis Package
    gProof->UploadPackage("ANALYSIS.par");
    gProof->EnablePackage("ANALYSIS");
    // Enable the PHOS geometry Package
    //gProof->UploadPackage("PHOSUtils.par");
    //gProof->EnablePackage("PHOSUtils");
    gProof->ShowEnabledPackages();
  }  
  
}

void SetupPar(char* pararchivename)
{
  //Load par files, create analysis libraries
  //For testing, if par file already decompressed and modified
  //classes then do not decompress.
 
  TString cdir(Form("%s", gSystem->WorkingDirectory() )) ; 
  TString parpar(Form("%s.par", pararchivename)) ; 
  if ( gSystem->AccessPathName(parpar.Data()) ) {
    gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;
    TString processline(Form(".! make %s", parpar.Data())) ; 
    gROOT->ProcessLine(processline.Data()) ;
    gSystem->ChangeDirectory(cdir) ; 
    processline = Form(".! mv $ALICE_ROOT/%s .", parpar.Data()) ;
    gROOT->ProcessLine(processline.Data()) ;
  } 
  if ( gSystem->AccessPathName(pararchivename) ) {  
    TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
    gROOT->ProcessLine(processline.Data());
  }
  
  TString ocwd = gSystem->WorkingDirectory();
  gSystem->ChangeDirectory(pararchivename);
  
  // check for BUILD.sh and execute
  if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
    printf("*******************************\n");
    printf("*** Building PAR archive    ***\n");
    cout<<pararchivename<<endl;
    printf("*******************************\n");
    
    if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
      Error("runProcess","Cannot Build the PAR Archive! - Abort!");
      return -1;
    }
  }
  // check for SETUP.C and execute
  if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
    printf("*******************************\n");
    printf("*** Setup PAR archive       ***\n");
    cout<<pararchivename<<endl;
    printf("*******************************\n");
    gROOT->Macro("PROOF-INF/SETUP.C");
  }
  
  gSystem->ChangeDirectory(ocwd.Data());
  printf("Current dir: %s\n", ocwd.Data());
}



void CreateChain(const anaModes mode, TChain * chain){
  //Fills chain with data
  TString ocwd = gSystem->WorkingDirectory();
  
  //-----------------------------------------------------------
  //Analysis of CAF data locally and with PROOF
  //-----------------------------------------------------------
  if(mode ==mPROOF || mode ==mLocalCAF){
    // Chain from CAF
    gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
    // The second parameter is the number of input files in the chain
    chain = CreateESDChain("ESD12001.txt", 5);  
  }
  
  //---------------------------------------
  //Local files analysis
  //---------------------------------------
  else if(mode == mLocal){    
    //If you want to add several ESD files sitting in a common directory INDIR
    //Specify as environmental variables the directory (INDIR), the number of files 
    //to analyze (NFILES) and the pattern name of the directories with files (PATTERN)

    if(gSystem->Getenv("INDIR"))  
      kInDir = gSystem->Getenv("INDIR") ; 
    else cout<<"INDIR not set, use default: "<<kInDir<<endl;	
    
    if(gSystem->Getenv("PATTERN"))   
      kPattern = gSystem->Getenv("PATTERN") ; 
    else  cout<<"PATTERN not set, use default: "<<kPattern<<endl;
    
    if(gSystem->Getenv("NFILES"))
      kFile = atoi(gSystem->Getenv("NFILES")) ;
    else cout<<"NFILES not set, use default: "<<kFile<<endl;
    
    //Check if env variables are set and are correct
    if ( kInDir  && kFile) {
      printf("Get %d files from directory %s\n",kFile,kInDir);
      if ( ! gSystem->cd(kInDir) ) {//check if ESDs directory exist
	printf("%s does not exist\n", kInDir) ;
	return ;
      }

  
      cout<<"INDIR   : "<<kInDir<<endl;
      cout<<"NFILES  : "<<kFile<<endl;
      cout<<"PATTERN : " <<kPattern<<endl;

      TString datafile="";
      if(kInputData == "ESD") datafile = "AliESDs.root" ;
      else if(kInputData == "AOD") datafile = "AliAODs.root" ;
      else if(kInputData == "MC")  datafile = "galice.root" ;
      
      //Loop on ESD files, add them to chain
      Int_t event =0;
      Int_t skipped=0 ; 
      char file[120] ;
      
      for (event = 0 ; event < kFile ; event++) {
	sprintf(file, "%s/%s%d/%s", kInDir,kPattern,event,datafile.Data()) ; 
	TFile * fESD = 0 ; 
	//Check if file exists and add it, if not skip it
	if ( fESD = TFile::Open(file)) {
	  if ( fESD->Get(kTreeName) ) { 
	    printf("++++ Adding %s\n", file) ;
	    chain->AddFile(file);
	  }
	}
	else { 
	  printf("---- Skipping %s\n", file) ;
	  skipped++ ;
	}
      }
      printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped*100) ; 	
    }
    else {
      TString input = "AliESDs.root" ;
      cout<<">>>>>> No list added, take a single file <<<<<<<<< "<<input<<endl;
      chain->AddFile(input);
    }
    
  }// local files analysis
  
  //------------------------------
  //GRID xml files
  //-----------------------------
  else if(mode == mGRID){
    //Get colection file. It is specified by the environmental
    //variable XML

    if(gSystem->Getenv("XML") )
      kXML = gSystem->Getenv("XML");
    else
      sprintf(kXML, "collection.xml") ; 
    
    if (!TFile::Open(kXML)) {
      printf("No collection file with name -- %s -- was found\n",kXML);
      return ;
    }
    else cout<<"XML file "<<kXML<<endl;

    //Load necessary libraries and connect to the GRID
    gSystem->Load("libNetx.so") ; 
    gSystem->Load("libRAliEn.so"); 
    TGrid::Connect("alien://") ;

    //Feed Grid with collection file
    //TGridCollection * collection =  (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)", kXML));
    TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(kXML);
    if (! collection) {
      AliError(Form("%s not found", kXML)) ; 
      return kFALSE ; 
    }
    TGridResult* result = collection->GetGridResult("",0 ,0);
   
    // Makes the ESD chain 
    printf("*** Getting the Chain       ***\n");
    for (Int_t index = 0; index < result->GetEntries(); index++) {
      TString alienURL = result->GetKey(index, "turl") ; 
      cout << "================== " << alienURL << endl ; 
      chain->Add(alienURL) ; 
    }
  }// xml analysis
  
  gSystem->ChangeDirectory(ocwd.Data());
}

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