ROOT logo
enum anaModes {mLocal,mLocalPAR,mPROOF,mGrid,mGridPAR};
//mLocal: Analyze locally files in your computer using aliroot
//mLocalPAR: Analyze locally files in your computer using root + PAR files
//mPROOF: Analyze CAF files with PROOF
//mGrid: Analyze files on Grid via AliEn plug-in and using precompiled FLOW libraries
//mGridPAR: Analyze files on Grid via AliEn plug-in and using par files for FLOW package


const TString analysisType = "ESD"; //"MC", "ESD", "AOD"
const TString analysisMode = "TPC"; //"TPC", "Global"

//void runTaskFluctuations(Int_t mode = mPROOF, Int_t nRuns = 600000, 
//Bool_t DATA = kTRUE, const Char_t* dataDir="/alice/data/LHC10h_000137161_p1_4plus#esdTree", Int_t offset=0) {
void runTaskFluctuations(Int_t mode = mLocal, Bool_t DATA = kTRUE) {
//void runTaskFluctuations(Int_t mode = mGrid, Bool_t DATA = kTRUE) {
  // Time:
  TStopwatch timer;
  timer.Start();
  
  // Load needed libraries:
  LoadLibraries(mode);
  
  // Create and configure the AliEn plug-in:
  if(mode == mGrid || mode == mGridPAR) {
    gROOT->LoadMacro("CreateAlienHandler.C");
    AliAnalysisGrid *alienHandler = CreateAlienHandler();  
    if (!alienHandler) return;
    gROOT->LoadMacro("AliEbyEFluctuationAnalysisTask.cxx++");
  }
  // Chains:   
  if(mode==mLocal || mode == mLocalPAR) {
    gROOT->LoadMacro("AliEbyEFluctuationAnalysisTask.cxx++");
    if (analysisType=="ESD") { 
      TChain* chain = new TChain("esdTree");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set1/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set2/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set3/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set4/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set5/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set6/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set7/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set8/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set9/AliESDs.root");
      chain->Add("/data/alice2/pchrist/HeavyIons/Data/Pass1_4Plus/Set10/AliESDs.root");
    }
    else if(analysisType == "MC") {
      TChain *chain = new TChain("TE");
      chain->AddFile("galice.root");
    }
    else
      TChain* chain = CreateAODChain(dataDir, nRuns, offset);
  }
  //Proof
  if(mode == mPROOF) {
    gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));
    gProof->Load("AliEbyEFluctuationAnalysisTask.cxx++");
  }

  // Create analysis manager:
  AliAnalysisManager *mgr = new AliAnalysisManager("FluctuationsAnalysisManager");
  // Connect plug-in to the analysis manager:
  if(mode == mGrid || mode == mGridPAR) { 
    mgr->SetGridHandler(alienHandler);
  }
  // Event handlers:
  if(analysisType == "ESD") {
    AliVEventHandler* esdH = new AliESDInputHandler;
    mgr->SetInputEventHandler(esdH);
  } // end of if(analysisType == "ESD")  
  if(analysisType == "AOD") {
    AliVEventHandler* aodH = new AliAODInputHandler;
    mgr->SetInputEventHandler(aodH); 
  } // end of if(analysisType == "AOD")  
  if(analysisType == "MC") {
    AliVEventHandler* esdH = new AliESDInputHandler;
    mgr->SetInputEventHandler(esdH);
    AliMCEventHandler *mc = new AliMCEventHandler();
    mc->SetReadTR(kFALSE);
    mgr->SetMCtruthEventHandler(mc); 
  } // end of  if(analysisType == "MC")
    
  // Task to check the offline trigger:
  //if(mode == mLocal || mode == mGrid || mode == mGridPAR)
  if(analysisType != "MC") {
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C"); 
    AliPhysicsSelectionTask* physicsSelTask = AddTaskPhysicsSelection(!DATA);
    if(!DATA){physicsSelTask->GetPhysicsSelection()->SetAnalyzeMC();}
    // Enable debug printouts:
    mgr->SetDebugLevel(2);
    
    //Add the centrality determination task
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
    AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
    //taskCentrality->SelectCollisionCandidates(AliVEvent::kMB);
  }

  // Load the analysis task:
  gROOT->LoadMacro("AddTaskFluctuations.C");
  AliEbyEFluctuationAnalysisTask* taskFA = AddTaskFluctuations(analysisType.Data(),
							       analysisMode.Data());

  // Run the analysis:
  if(!mgr->InitAnalysis()){return;}
  mgr->PrintStatus(); 
  if(mode == mLocal || mode == mLocalPAR) 
    mgr->StartAnalysis("local",chain);
  else if(mode == mPROOF) 
    mgr->StartAnalysis("proof",dataDir,nRuns,offset);
  else if(mode == mGrid || mode == mGridPAR) 
    mgr->StartAnalysis("grid");

  // Print real and CPU time used for analysis:  
  timer.Stop();
  timer.Print();
  
} // end of void runTaskFluctuations(...)

//=============================================================//
void LoadLibraries(const anaModes mode) {  
  //--------------------------------------
  // Load the needed libraries most of them already loaded by aliroot
  //--------------------------------------
  gSystem->Load("libTree");
  gSystem->Load("libGeom");
  gSystem->Load("libVMC");
  gSystem->Load("libXMLIO");
  gSystem->Load("libPhysics");
  
  //----------------------------------------------------------
  // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< 
  //----------------------------------------------------------
  if (mode==mLocal || mode==mGrid || mode == mGridPAR) {
    //--------------------------------------------------------
    // If you want to use already compiled libraries 
    // in the aliroot distribution
    //--------------------------------------------------------
    gSystem->Load("libSTEERBase");
    gSystem->Load("libESD");
    gSystem->Load("libAOD");
    gSystem->Load("libANALYSIS");
    gSystem->Load("libANALYSISalice");
    // Use AliRoot includes to compile our task                                   
    gROOT->ProcessLine(".include $ALICE_ROOT/include");
    if(mode==mLocal || mode==mGrid){
      gSystem->Load("libEventMixing.so");
      gSystem->Load("libPWGCFebye");
    }
    if(mode==mGridPAR){
      SetupPar("EventMixing");
      SetupPar("PWGCFebye");
    }
  }
  
  else if (mode == mLocalPAR) {
    //--------------------------------------------------------
    //If you want to use root and par files from aliroot
    //--------------------------------------------------------  
    SetupPar("STEERBase");
    SetupPar("ESD");
    SetupPar("AOD");
    SetupPar("ANALYSIS");
    SetupPar("ANALYSISalice");
    SetupPar("PWGCFebye");
}
  
  //---------------------------------------------------------
  // <<<<<<<<<< PROOF mode >>>>>>>>>>>>
  //---------------------------------------------------------
  else if (mode==mPROOF) {
    // Connect to proof
    printf("*** Connect to PROOF ***\n");
    gEnv->SetValue("XSec.GSI.DelegProxy","2");
    // Put appropriate username here
    TProof::Open("alice-caf.cern.ch");
    //TProof::Open("skaf.saske.sk");
    //TProof::Open("prf000-iep-grid.saske.sk");

    gProof->EnablePackage("VO_ALICE@AliRoot::v4-21-12-AN");
 
    // Clear the Packages    
    //gProof->ClearPackage("STEERBase.par");
    //gProof->ClearPackage("ESD.par");
    //gProof->ClearPackage("AOD.par");
    //gProof->ClearPackage("ANALYSIS.par");
    //gProof->ClearPackage("ANALYSISalice.par");    
    //gProof->ClearPackage("PWGCFebye");
    
    // Upload the Packages
    //gProof->UploadPackage("STEERBase.par");
    //gProof->UploadPackage("ESD.par");    
    //gProof->UploadPackage("AOD.par");       
    //gProof->UploadPackage("ANALYSIS.par"); 
    //gProof->UploadPackage("ANALYSISalice.par");
    //gProof->UploadPackage("CORRFW.par");
    //gProof->UploadPackage("PWGCFebye");

    // Enable the Packages 
    //gProof->EnablePackage("STEERBase");
    //gProof->EnablePackage("ESD");
    //gProof->EnablePackage("AOD");
    //gProof->EnablePackage("ANALYSIS");
    //gProof->EnablePackage("ANALYSISalice");
    //gProof->EnablePackage("PWGCFebye");

    // Show enables Packages
    //gProof->ShowEnabledPackages();
  }  
  
} // end of void LoadLibraries(const anaModes mode)

//===============================================================================================

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 /tmp/%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());

} // end of void SetupPar(char* pararchivename) 

//===============================================================================================

// Helper macros for creating chains
// from: CreateESDChain.C,v 1.10 jgrosseo Exp

TChain* CreateESDChain(const char* aDataDir, Int_t aRuns, Int_t offset)
{
  // creates chain of files in a given directory or file containing a list.
  // In case of directory the structure is expected as:
  // <aDataDir>/<dir0>/AliESDs.root
  // <aDataDir>/<dir1>/AliESDs.root
  // ...
  
  if (!aDataDir)
    return 0;
  
  Long_t id, size, flags, modtime;
  if (gSystem->GetPathInfo(aDataDir, &id, &size, &flags, &modtime))
    {
      printf("%s not found.\n", aDataDir);
      return 0;
    }
  
  TChain* chain = new TChain("esdTree");
  TChain* chaingAlice = 0;
  
  if (flags & 2)
    {
      TString execDir(gSystem->pwd());
      TSystemDirectory* baseDir = new TSystemDirectory(".", aDataDir);
      TList* dirList            = baseDir->GetListOfFiles();
      Int_t nDirs               = dirList->GetEntries();
      gSystem->cd(execDir);
      
      Int_t count = 0;
      
      for (Int_t iDir=0; iDir<nDirs; ++iDir)
	{
	  TSystemFile* presentDir = (TSystemFile*) dirList->At(iDir);
	  if (!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 || strcmp(presentDir->GetName(), "..") == 0)
	    continue;
	  
	  if (offset > 0)
	    {
	      --offset;
	      continue;
	    }
	  
	  if (count++ == aRuns)
	    break;
	  
	  TString presentDirName(aDataDir);
	  presentDirName += "/";
	  presentDirName += presentDir->GetName();	  
	  chain->Add(presentDirName + "/AliESDs.root/esdTree");
	  //  cerr<<presentDirName<<endl;
	}
      
    }
  else
    {
      // Open the input stream
      ifstream in;
      in.open(aDataDir);
      
      Int_t count = 0;
      
      // Read the input list of files and add them to the chain
      TString esdfile;
      while(in.good()) {
	in >> esdfile;
	if (!esdfile.Contains("root")) continue; // protection
	
	if (offset > 0)
	  {
	    --offset;
	    continue;
	  }
	
	if (count++ == aRuns)
	  break;
	
	// add esd file
	chain->Add(esdfile);
      }
      
      in.close();
    }
  
  return chain;

} // end of TChain* CreateESDChain(const char* aDataDir, Int_t aRuns, Int_t offset)

//===============================================================================================

TChain* CreateAODChain(const char* aDataDir, Int_t aRuns, Int_t offset)
{
  // creates chain of files in a given directory or file containing a list.
  // In case of directory the structure is expected as:
  // <aDataDir>/<dir0>/AliAOD.root
  // <aDataDir>/<dir1>/AliAOD.root
  // ...
  
  if (!aDataDir)
    return 0;
  
  Long_t id, size, flags, modtime;
  if (gSystem->GetPathInfo(aDataDir, &id, &size, &flags, &modtime))
    {
      printf("%s not found.\n", aDataDir);
      return 0;
    }
  
  TChain* chain = new TChain("aodTree");
  TChain* chaingAlice = 0;
  
  if (flags & 2)
    {
      TString execDir(gSystem->pwd());
      TSystemDirectory* baseDir = new TSystemDirectory(".", aDataDir);
      TList* dirList            = baseDir->GetListOfFiles();
      Int_t nDirs               = dirList->GetEntries();
      gSystem->cd(execDir);
      
      Int_t count = 0;
      
      for (Int_t iDir=0; iDir<nDirs; ++iDir)
	{
	  TSystemFile* presentDir = (TSystemFile*) dirList->At(iDir);
	  if (!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 || strcmp(presentDir->GetName(), "..") == 0)
	    continue;
	  
	  if (offset > 0)
	    {
	      --offset;
	      continue;
	    }
	  
	  if (count++ == aRuns)
	    break;
	  
	  TString presentDirName(aDataDir);
	  presentDirName += "/";
	  presentDirName += presentDir->GetName();	  
	  chain->Add(presentDirName + "/AliAOD.root/aodTree");
	  // cerr<<presentDirName<<endl;
	}
      
    }
  else
    {
      // Open the input stream
      ifstream in;
      in.open(aDataDir);
      
      Int_t count = 0;
      
      // Read the input list of files and add them to the chain
      TString aodfile;
      while(in.good()) {
	in >> aodfile;
	if (!aodfile.Contains("root")) continue; // protection
	
	if (offset > 0)
	  {
	    --offset;
	    continue;
	  }
	
	if (count++ == aRuns)
	  break;
	
	// add aod file
	chain->Add(aodfile);
      }
      
      in.close();
    }
  
  return chain;

} // end of TChain* CreateAODChain(const char* aDataDir, Int_t aRuns, Int_t offset)

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