ROOT logo
// run.C
//
// Template run macro for AliBasicTask.cxx/.h with example layout of
// physics selections and options, in macro and task.
//
// Author: Arvinder Palaha
//
class AliAnalysisGrid;
class AliAnalysisTaskBF;
class AliBalance;

//Centrality stuff
Int_t binfirst = 0;  //where do we start numbering bins
Int_t binlast = 8;  //where do we stop numbering bins
const Int_t numberOfCentralityBins = 9;
Double_t centralityArray[numberOfCentralityBins+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.}; // in centrality percentile

//Systematic studies
const Int_t numberOfSyst = 13;
Float_t vZ[numberOfSyst]     = {10.,12.,6.,8.,10.,10.,10.,10.,10.,10.,10.,10.,10.};     // global Vertex Z cut
Float_t DCAxy[numberOfSyst]  = {-1.,2.4,2.4,2.4,2.2,2.0,1.8,2.4,2.4,2.4,2.4,2.4,2.4};   // DCA xy cut (afterburner, -1 = w/o additional cut)
Float_t DCAz[numberOfSyst]   = {-1.,3.2,3.2,3.2,3.0,2.8,2.6,3.2,3.2,3.2,3.2,3.2,3.2};   // DCA z cut (afterburner, -1 = w/o additional cut)
Float_t ptMin[numberOfSyst]  = {0.3,0.3,0.3,0.3,0.3,0.3,0.3,1.5,5.0,0.3,0.3,0.3,0.3};   // pt cuts
Float_t ptMax[numberOfSyst]  = {5.,1.5,1.5,1.5,1.5,1.5,1.5,5.0,10.0,10.0,1.5,1.5,1.5}; // pt cuts
Float_t etaMin[numberOfSyst] = {-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-1.0,-0.6,-0.4}; // eta cuts
Float_t etaMax[numberOfSyst] = {0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,1.0,0.6,0.4};   // eta cuts

Bool_t kUsePID = kFALSE;
Bool_t bUseHBTCut = kTRUE;
Bool_t bUseConversionCut = kTRUE;
Bool_t bResonancesCut = kTRUE;
Bool_t bMomentumDifferenceCut = kTRUE;
Int_t kNSigmaElectronRejection = 3;

//______________________________________________________________________________
void runBalanceFunctionPsi(
         const char* runtype = "local", // local, proof or grid
         const char *gridmode = "test", // Set the run mode (can be "full", "test", "offline", "submit" or "terminate"). Full & Test work for proof
	 const Int_t bunchN = 0,
         const bool bAOD = 1, // 1 = AOD ANALYSIS, 0 = ESD ANALYSIS
         const bool bMCtruth = 0, // 1 = MCEvent handler is on (MC truth), 0 = MCEvent handler is off (MC reconstructed/real data)
         const bool bMCphyssel = 1, // 1 = looking at MC truth or reconstructed, 0 = looking at real data
         const Long64_t nentries = 50000, // for local and proof mode, ignored in grid mode. Set to 1234567890 for all events.
         const Long64_t firstentry = 0, // for local and proof mode, ignored in grid mode
         TString proofdataset = "bunchPROOF", // path to dataset on proof cluster, for proof analysis
         const char *proofcluster = "miweber@alice-caf.cern.ch", // which proof cluster to use in proof mode
         const char *taskname = "BF_Syst_Test" // sets name of grid generated macros
         )
{
    // check run type
    if(runtype != "local" && runtype != "proof" && runtype != "grid") {
        Printf("\n\tIncorrect run option, check first argument of run macro");
        Printf("\tint runtype = local, proof or grid\n");
        return;
    }
    Printf("%s analysis chosen",runtype);
  
    // load libraries
    gSystem->Load("libCore.so");        
    gSystem->Load("libGeom.so");
    gSystem->Load("libVMC.so");
    gSystem->Load("libPhysics.so");
    gSystem->Load("libTree.so");
    gSystem->Load("libSTEERBase.so");
    gSystem->Load("libESD.so");
    gSystem->Load("libAOD.so");
    gSystem->Load("libANALYSIS.so");
    gSystem->Load("libANALYSISalice.so");
    gSystem->Load("libEventMixing.so");
    gSystem->Load("libCORRFW.so");
    gSystem->Load("libPWGTools.so");
    gSystem->Load("libPWGCFebye.so");

    // additional

    // compile standalone stuff
    //gROOT->LoadMacro("AliBalance.cxx++g");
    //gROOT->LoadMacro("AliAnalysisTaskBF.cxx++g");

    // add aliroot indlude path
    //gROOT->ProcessLine(".include $PWD/.");
    //gROOT->ProcessLine(Form(".include %s/include",gSystem->ExpandPathName("$ALICE_ROOT")));

    gROOT->SetStyle("Plain");

    // analysis manager
    AliAnalysisManager* mgr = new AliAnalysisManager(Form("%s%i",taskname,bunchN));
    
    // create the alien handler and attach it to the manager
    if(runtype == "grid") {
      AliAnalysisGrid *plugin = CreateAlienHandler(bAOD,bunchN,Form("%s%i",taskname,bunchN), gridmode, proofcluster, Form("%s_%d.txt",proofdataset.Data(),bunchN)); 
      mgr->SetGridHandler(plugin);
    }
    else if(runtype == "local") {
      TString filename;
      TChain* chain = 0x0;
      if((!bAOD)&&(!bMCtruth)) {
	chain = new TChain("esdTree");
	for(Int_t i = 0; i < 4; i++) {
	  filename = "/data/alice2/pchrist/HeavyIons/Data/2011/Set";
	  filename += i; filename += "/AliESDs.root";
	  chain->Add(filename.Data());
	}
      }
      else if((bAOD)&&(!bMCtruth)) {
	chain = new TChain("aodTree");
	for(Int_t i = 1; i < 20; i++) {
	  filename = "/glusterfs/alice1/alice2/pchrist/pp/LHC10c/7TeV/Data/Set";
	  filename += i; filename += "/AliAOD.root";
	  chain->Add(filename.Data());
	}
      }
      else if((!bAOD)&&(bMCtruth)) {
	chain = new TChain("TE");
	for(Int_t i = 10; i < 99; i++) {
	  filename = "/project/alice/users/alisrm/Efficiency_Contamination/LHC13b3_HIJING_pA_AOD/";
	  filename += i;
	  filename += "/galice.root";
	  chain->Add(filename.Data());
	}
      }
      else if((bAOD)&&(bMCtruth)) { //used for MCAOD
	chain = new TChain("aodTree");   
	for(Int_t i = 10; i < 99; i++) { 
	  filename = "/project/alice/users/alisrm/Efficiency_Contamination/LHC13b3_HIJING_pA_AOD/";
	  filename += i; 
	  filename += "/AliAOD.root";
	  chain->Add(filename.Data());
	} 
      }
      

    }//local mode

    // input handler (ESD or AOD)
    AliVEventHandler* inputH = NULL;
    if(!bAOD){
      inputH = new AliESDInputHandler();
    }
    else{
      inputH = new AliAODInputHandler();
    }
    mgr->SetInputEventHandler(inputH);
    
    // mc event handler
    if(bMCtruth) {
      AliMCEventHandler* mchandler = new AliMCEventHandler();
      // Not reading track references
      mchandler->SetReadTR(kFALSE);
      mgr->SetMCtruthEventHandler(mchandler);
    }   
    
    // AOD output handler
    //AliAODHandler* aodoutHandler = new AliAODHandler();
    //aodoutHandler->SetOutputFileName("aod.root");
    //mgr->SetOutputEventHandler(aodoutHandler); 
    
    // === Physics Selection Task ===
    //
    // In SelectCollisionCandidate(), default is kMB, so the task UserExec() 
    // function is only called for these events.
    // Options are:
    //    kMB             Minimum Bias trigger
    //    kMBNoTRD        Minimum bias trigger where the TRD is not read out
    //    kMUON           Muon trigger
    //    kHighMult       High-Multiplicity Trigger
    //    kUserDefined    For manually defined trigger selection
    //
    // Multiple options possible with the standard AND/OR operators && and ||
    // These all have the usual offline SPD or V0 selections performed.
    //
    // With a pointer to the physics selection object using physSelTask->GetPhysicsSelection(),
    // one can manually set the selected and background classes using:
    //    AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL")
    //    AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL");
    //
    // One can also specify multiple classes at once, or require a class to NOT
    // trigger, for e.g.
    //    AddBGTriggerClass("+CSMBA-ABCE-NOPF-ALL -CSMBB-ABCE-NOPF-ALL");
    //
    // NOTE that manually setting the physics selection overrides the standard
    // selection, so it must be done in completeness.
    //
    // ALTERNATIVELY, one can make the physics selection inside the task
    // UserExec().
    // For this case, comment out the task->SelectCol.... line, 
    // and see AliBasicTask.cxx UserExec() function for details on this.

    //gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
    //AliPhysicsSelectionTask *physSelTask = AddTaskPhysicsSelection(bMCphyssel);
    //if(!physSelTask) { Printf("no physSelTask"); return; }
    //AliPhysicsSelection *physSel = physSelTask->GetPhysicsSelection();
    //physSel->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL");// #3119 #769");
                
    // create task
    //Add the centrality determination task and the physics selection 
    // (only on ESD level, in AODs centrality is already in header and events are selected)
    if((!bAOD)&&(!bMCtruth)){
      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
      AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();

      // Add physics selection task (NOT needed for AODs)
      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
      AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(bMCphyssel);
    }

    //Add the PID response
    if((kUsePID)||(kNSigmaElectronRejection)) {
      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
      AddTaskPIDResponse(bMCphyssel); 
    }

    //Add the VZERO event plane task
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C"); 
    AliVZEROEPSelectionTask* epSelTask = AddTaskVZEROEPSelection();

    //Add the BF task (all centralities)
    gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/AddTaskBalancePsiCentralityTrain.C"); 

    AliAnalysisTaskBFPsi *taskBF = AddTaskBalancePsiCentralityTrain(0, 500, kFALSE, kTRUE, kFALSE, "V0M", 10, -1, -1, 0.2, 20.0, -0.8, 0.8, -1, -1, kUsePID, kFALSE, kTRUE, 0.02, kFALSE, 0.04, kTRUE, 0.1, 128, 1, "AnalysisResults","TE","Multiplicity","AOD",kTRUE, kNSigmaElectronRejection);
    //taskBF->SetDebugLevel();

    // enable debug printouts
    //mgr->SetDebugLevel(2);
    //mgr->SetUseProgressBar(1,100);
    if (!mgr->InitAnalysis()) return;
    mgr->PrintStatus();
  
    // start analysis
    Printf("Starting Analysis....");
    if(runtype == "local") 
      mgr->StartAnalysis("local",chain);
    else
      mgr->StartAnalysis(runtype,nentries,firstentry);
}

//______________________________________________________________________________
AliAnalysisGrid* CreateAlienHandler(Bool_t bAOD, Int_t bunchN, const char *taskname, const char *gridmode, const char *proofcluster, const char *proofdataset)
{
    AliAnalysisAlien *plugin = new AliAnalysisAlien();
    // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
    plugin->SetRunMode(gridmode);

    // Set versions of used packages
    plugin->SetAPIVersion("V1.1x");
    plugin->SetROOTVersion("v5-28-00d");
    plugin->SetAliROOTVersion("v5-02-05-AN");

    // Declare input data to be processed.

    // Method 1: Create automatically XML collections using alien 'find' command.
    // Define production directory LFN
    plugin->SetGridDataDir("/alice/data/2010/LHC10h/");
    // On real reconstructed data:
    // plugin->SetGridDataDir("/alice/data/2009/LHC09d");

    // Set data search pattern
    //plugin->SetDataPattern("*ESDs.root"); // THIS CHOOSES ALL PASSES
    // Data pattern for reconstructed data
    if(!bAOD){
      plugin->SetDataPattern("*ESDs/pass2/*ESDs.root"); // CHECK LATEST PASS OF DATA SET IN ALIENSH
    } 
    else{
      plugin->SetDataPattern("*ESDs/pass2/AOD049/*/AliAOD.root");
    }

    plugin->SetRunPrefix("000");   // real data
    // ...then add run numbers to be considered
    //plugin->SetRunRange(114917,115322);

    if(bunchN==0){
      plugin->AddRunNumber(137366);
    }
    
    //bunch1
    else if(bunchN == 1){
      plugin->AddRunNumber(139510);
      plugin->AddRunNumber(139507);
      plugin->AddRunNumber(139505);
      plugin->AddRunNumber(139503); 
      plugin->AddRunNumber(139465); 
      plugin->AddRunNumber(139438);
      plugin->AddRunNumber(139437);
      plugin->AddRunNumber(139360); 
      plugin->AddRunNumber(139329);
      plugin->AddRunNumber(139328); 
    }

    //bunch2
    else if(bunchN == 2){
      plugin->AddRunNumber(139314); 
      plugin->AddRunNumber(139310);
      plugin->AddRunNumber(139309); 
      plugin->AddRunNumber(139173); 
      plugin->AddRunNumber(139107); 
      plugin->AddRunNumber(139105); 
      plugin->AddRunNumber(139038); 
      plugin->AddRunNumber(139037); 
      plugin->AddRunNumber(139036); 
      plugin->AddRunNumber(139029); 
      plugin->AddRunNumber(139028); 
      plugin->AddRunNumber(138872); 
      plugin->AddRunNumber(138871); 
      plugin->AddRunNumber(138870); 
      plugin->AddRunNumber(138837); 
      plugin->AddRunNumber(138732); 
      plugin->AddRunNumber(138730);
      plugin->AddRunNumber(138666);
      plugin->AddRunNumber(138662); 
      plugin->AddRunNumber(138653); 
    }

    else if(bunchN == 3){
      plugin->AddRunNumber(138652);
      plugin->AddRunNumber(138638);
      plugin->AddRunNumber(138624); 
      plugin->AddRunNumber(138621); 
      plugin->AddRunNumber(138583); 
      plugin->AddRunNumber(138582); 
      plugin->AddRunNumber(138579); 
      plugin->AddRunNumber(138578);
      plugin->AddRunNumber(138534);
      plugin->AddRunNumber(138469); 
    }

    else if(bunchN == 4){
      
      plugin->AddRunNumber(138442);
      plugin->AddRunNumber(138439);
      plugin->AddRunNumber(138438);
      plugin->AddRunNumber(138396); 
      plugin->AddRunNumber(138364); 
      plugin->AddRunNumber(138275); 
      plugin->AddRunNumber(138225); 
      plugin->AddRunNumber(138201);
      plugin->AddRunNumber(138197); 
      plugin->AddRunNumber(138192); 
    }

    else if(bunchN == 5){

      plugin->AddRunNumber(138190);
      plugin->AddRunNumber(137848); 
      plugin->AddRunNumber(137844); 
      plugin->AddRunNumber(137752); 
      plugin->AddRunNumber(137751); 
      plugin->AddRunNumber(137724); 
      plugin->AddRunNumber(137722); 
      plugin->AddRunNumber(137718); 
      plugin->AddRunNumber(137704); 
      plugin->AddRunNumber(137693);
    }

    else if(bunchN == 6){

      plugin->AddRunNumber(137692); 
      plugin->AddRunNumber(137691); 
      plugin->AddRunNumber(137686); 
      plugin->AddRunNumber(137685); 
      plugin->AddRunNumber(137639); 
      plugin->AddRunNumber(137638);
      plugin->AddRunNumber(137608); 
      plugin->AddRunNumber(137595);
      plugin->AddRunNumber(137549);
      plugin->AddRunNumber(137546); 

    }

    else if(bunchN == 7){

      plugin->AddRunNumber(137544); 
      plugin->AddRunNumber(137541); 
      plugin->AddRunNumber(137539); 
      plugin->AddRunNumber(137531); 
      plugin->AddRunNumber(137530); 
      plugin->AddRunNumber(137443); 
      plugin->AddRunNumber(137441); 
      plugin->AddRunNumber(137440); 
      plugin->AddRunNumber(137439); 
      plugin->AddRunNumber(137434); 

    }

    else if(bunchN == 8){

      plugin->AddRunNumber(137432); 
      plugin->AddRunNumber(137431); 
      plugin->AddRunNumber(137430); 
      plugin->AddRunNumber(137366); 
      plugin->AddRunNumber(137243); 
      plugin->AddRunNumber(137236);
      plugin->AddRunNumber(137235);
      plugin->AddRunNumber(137232); 
      plugin->AddRunNumber(137231); 
      plugin->AddRunNumber(137162); 
      plugin->AddRunNumber(137161);
    }

    else{

      stderr<<"BUNCH NOT THERE"<<endl;
      return NULL;

    }


    //plugin->AddRunList("139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137162, 137161");





    plugin->SetNrunsPerMaster(1);
    plugin->SetOutputToRunNo();
    // comment out the next line when using the "terminate" option, unless
    // you want separate merged files for each run
    plugin->SetMergeViaJDL();

    // Method 2: Declare existing data files (raw collections, xml collections, root file)
    // If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir())
    // XML collections added via this method can be combined with the first method if
    // the content is compatible (using or not tags)
    //   plugin->AddDataFile("tag.xml");
    //   plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");

    // Define alien work directory where all files will be copied. Relative to alien $HOME.
    plugin->SetGridWorkingDir(taskname);

    // Declare alien output directory. Relative to working directory.
    plugin->SetGridOutputDir("out"); // In this case will be $HOME/taskname/out

   // Declare the analysis source files names separated by blancs. To be compiled runtime
    // using ACLiC on the worker nodes.
    plugin->SetAnalysisSource("AliBalance.cxx AliAnalysisTaskBF.cxx");

    // Declare all libraries (other than the default ones for the framework. These will be
    // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
    //plugin->AddIncludePath("-I.");
    //plugin->SetAdditionalLibs("libPWGCFebye.so");
    plugin->SetAdditionalLibs("AliBalance.cxx AliBalance.h AliAnalysisTaskBF.cxx AliAnalysisTaskBF.h");

     // Declare the output file names separated by blancs.
    // (can be like: file.root or file.root@ALICE::Niham::File)
    // To only save certain files, use SetDefaultOutputs(kFALSE), and then
    // SetOutputFiles("list.root other.filename") to choose which files to save
    plugin->SetDefaultOutputs();
    //plugin->SetOutputFiles("list.root");

    // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
    plugin->SetAnalysisMacro(Form("%s.C",taskname));

    // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
    plugin->SetSplitMaxInputFileNumber(100);

    // Optionally modify the executable name (default analysis.sh)
    plugin->SetExecutable(Form("%s.sh",taskname));

    // set number of test files to use in "test" mode
    plugin->SetNtestFiles(1);

    // Optionally resubmit threshold.
    plugin->SetMasterResubmitThreshold(90);

    // Optionally set time to live (default 30000 sec)
    plugin->SetTTL(90000);

    // Optionally set input format (default xml-single)
    plugin->SetInputFormat("xml-single");

    // Optionally modify the name of the generated JDL (default analysis.jdl)
    plugin->SetJDLName(Form("%s.jdl",taskname));

    // Optionally modify job price (default 1)
    plugin->SetPrice(1);      

    // Optionally modify split mode (default 'se')    
    plugin->SetSplitMode("se");

    //plugin->SetUseSubmitPolicy();
    //plugin->SetKeepLogs();
    
    //----------------------------------------------------------
    //---      PROOF MODE SPECIFIC SETTINGS         ------------
    //---------------------------------------------------------- 
    // Proof cluster
    plugin->SetProofCluster(proofcluster);
    // Dataset to be used   
    plugin->SetProofDataSet(proofdataset);
    // May need to reset proof. Supported modes: 0-no reset, 1-soft, 2-hard
    plugin->SetProofReset(0);
    // May limit number of workers
    plugin->SetNproofWorkers(0);
    // May limit the number of workers per slave
    plugin->SetNproofWorkersPerSlave(1);   
    // May use a specific version of root installed in proof
    plugin->SetRootVersionForProof("current");
    // May set the aliroot mode. Check http://aaf.cern.ch/node/83 
    plugin->SetAliRootMode("default"); // Loads AF libs by default
    // May request ClearPackages (individual ClearPackage not supported)
    plugin->SetClearPackages(kFALSE);
    // Plugin test mode works only providing a file containing test file locations, used in "local" mode also
    plugin->SetFileForTestMode("files.txt"); // file should contain path name to a local directory containg *ESDs.root etc
    // Request connection to alien upon connection to grid
    plugin->SetProofConnectGrid(kFALSE);

    plugin->Print();

    return plugin;
}

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