ROOT logo
// Configuration macro for analysis of isolated photon spectra
// Author : Gustavo Conesa;  Marie Germain.

TString kAnaIsoPhotonName = "";
Int_t   kDebug         = -1;
TString kCalorimeter   = "EMCAL";
TString kData = "";
TString kPrint = 0 ;
 
AliAnalysisTaskCaloTrackCorrelation *AddTaskIsoPhoton(const Float_t  cone          = 0.4,
                                                      const Float_t  pth           = 2.,
                                                      const Bool_t   leading       = kFALSE,
                                                      const Bool_t   timecut       = kFALSE,
                                                      const TString  calorimeter   = "EMCAL",
                                                      const Bool_t   simu          = kFALSE,
                                                      const Bool_t   exotic        = kTRUE,
                                                      const Bool_t   nonlin        = kFALSE,
                                                      const TString  trigger       = "EMC7",
                                                      const Bool_t   tm            = kTRUE,
                                                      const Int_t    minCen        = -1,
                                                      const Int_t    maxCen        = -1,
                                                      const Float_t  deltaphicut   = 0.03,
                                                      const Float_t  deltaetacut   = 0.02,
                                                      const Float_t  tmin          = -30.,
                                                      const Float_t  tmax          = 30.,
                                                      const Bool_t   trackTcut     = kFALSE,
                                                      const Int_t    disttobad     = 2,
                                                      const Int_t    nlmMax        =  20,
                                                      const Bool_t   qaan          = kFALSE,
                                                      const Bool_t   primvtx       = kTRUE,
                                                      const Bool_t   notrackcut    = kTRUE,
                                                      const Bool_t   rdmtrigger    = kFALSE,
                                                      const TString  tag           = "",
                                                      const Int_t    debug         = -1,
                                                      const Bool_t   print         = kFALSE
                                                      )
{
kDebug = debug;
kCalorimeter  = calorimeter ;
kPrint = print ;
  // Creates a CaloTrackCorr task, configures it and adds it to the analysis manager.
  
  printf("AddTaskIsoPhoton() - Settings: cone %2.2f, pth %2.2f, timeCut On %d, NLM max cut %d, calorimeter %s, simu %d, exotic %d, non lin %d, trigger %s, TM %d, qa %d, debug %d, centrality %d-%d\n",
                                         cone,    pth,    timecut   ,    nlmMax,      calorimeter.Data(),simu, exotic,    nonlin,     trigger.Data(), tm,    qaan,   debug, minCen, maxCen );
  
  // Get the pointer to the existing analysis manager via the static access method.
  
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) 
  {
    ::Error("AddTask", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Check the analysis type using the event handlers connected to the analysis manager.
  
  if (!mgr->GetInputEventHandler()) 
  {
    ::Error("AddTask", "This task requires an input event handler");
    return NULL;
  }

  // Make sure the B field is enabled for track selection, some cuts need it
  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
  
  Bool_t useKinematics = kFALSE;
  useKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;

  // Name for containers
  
 if(tag!="")
 kAnaIsoPhotonName = Form("%s_Trig%s_TM%d_%1.3f_dB%d_R%1.1f_Pt%1.1f_%s",calorimeter.Data(), trigger.Data(),tm,deltaphicut,disttobad,cone,pth,tag.Data());
 else
 kAnaIsoPhotonName = Form("%s_Trig%s_TM%d_%1.3f_dB%d_R%1.1f_Pt%1.1f",calorimeter.Data(), trigger.Data(),tm,deltaphicut,disttobad,cone,pth);

  if(maxCen>=0) kAnaIsoPhotonName+=Form("Cen%d_%d",minCen,maxCen);
    
  printf("<<<< NAME: %s >>>>>\n",kAnaIsoPhotonName.Data());
  
  // #### Configure analysis ####
    
  AliAnaCaloTrackCorrMaker * maker = new AliAnaCaloTrackCorrMaker();
  
  //maker->SetScaleFactor(scaleFactor); // for MC, negative (not scaled) by default
  
  // General frame setting and configuration
  maker->SetReader   (ConfigureReader   (mgr->GetInputEventHandler()->GetDataType(),useKinematics,simu,
                                         calorimeter,nonlin, timecut, primvtx, notrackcut,tmin,tmax,trackTcut,minCen, maxCen, debug,print));
  maker->SetCaloUtils(ConfigureCaloUtils(nonlin,exotic,simu,timecut,debug,print));
  
  // Analysis tasks setting and configuration
  Int_t n = 0;//Analysis number, order is important

  // Isolation settings
  Int_t partInCone = AliIsolationCut::kNeutralAndCharged; // kOnlyCharged;
  //  Int_t thresType  = AliIsolationCut::kPtThresIC;//  AliIsolationCut::kSumPtFracIC ; 
  Int_t thresType  = AliIsolationCut::kSumPtIC ; 
  
 if(!rdmtrigger)
{
  // Photon analysis
  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,tm,deltaphicut,deltaetacut,disttobad,nlmMax,simu,debug,print), n++); // Photon cluster selection
  
  // Isolation analysis
  maker->AddAnalysis(ConfigureIsolationAnalysis(calorimeter,"Photon", partInCone,thresType,cone, pth,tm,leading,kFALSE,simu,debug,print), n++); // Photon isolation
}
else
{
  maker->AddAnalysis(ConfigureRandomTriggerAnalysis(), n++); 
  maker->AddAnalysis(ConfigureIsolationAnalysis(calorimeter,Form("RandomTrigger%s",kCalorimeter.Data()), partInCone,thresType,cone, pth,tm,leading,kFALSE,simu,debug,print), n++);// Ghost trigger isolation  
}


  // QA histograms on clusters or tracks
  if(qaan)
  {
    maker->AddAnalysis(ConfigureQAAnalysis(calorimeter,simu,debug,print),n++);
    maker->AddAnalysis(ConfigureChargedAnalysis(simu,debug), n++); // charged tracks plots
  }
  
  maker->SetAnaDebug(debug)  ;
  maker->SwitchOnHistogramsMaker()  ;
  maker->SwitchOnAODsMaker()  ;
  
  if(print) maker->Print("");
  
  maker->SwitchOffDataControlHistograms();
  
  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, calorimeter.Data());
 
  // Create task
  
  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation (Form("CaloTrackCorr%s",kAnaIsoPhotonName.Data()));
  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
  task->SetDebugLevel(debug);
  task->SetBranches("ESD:AliESDRun.,AliESDHeader"); 
  task->SetAnalysisMaker(maker);
  mgr->AddTask(task);
  
  //Create containers
  
  TString outputfile = AliAnalysisManager::GetCommonFileName();
  
  AliAnalysisDataContainer *cout_pc   = mgr->CreateContainer(kAnaIsoPhotonName, TList::Class(), 
                                                             AliAnalysisManager::kOutputContainer, 
                                                             Form("%s",outputfile.Data()));
	
  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kAnaIsoPhotonName.Data()), TList::Class(), 
                                                             AliAnalysisManager::kParamContainer, 
                                                             "AnalysisParameters.root");
  
  // Create ONLY the output containers for the data produced by the task.
  // Get and connect other common input/output containers via the manager as below
  //==============================================================================
  mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());
  // AOD output slot will be used in a different way in future
  mgr->ConnectOutput (task, 1, cout_pc);
  mgr->ConnectOutput (task, 2, cout_cuts);

  // Set the trigger selection
  UInt_t mask =  SetTriggerMaskFromName(trigger);
  task->SelectCollisionCandidates(mask);
  
  return task;
}

//____________________________________
AliCaloTrackReader * ConfigureReader(TString inputDataType = "AOD", Bool_t useKinematics = kFALSE, Bool_t simu = kFALSE,
                                     TString calorimeter = "EMCAL", Bool_t nonlin = kTRUE, Bool_t timecut = kFALSE,
                                     Bool_t primvtx = kFALSE, Bool_t notrackcut = kFALSE, Float_t tmin, Float_t tmax,
                                     Bool_t trackTcut = kFALSE, Float_t minCen = -1, Float_t maxCen = -1,
                                     Int_t debug = -1, Bool_t print = kFALSE)
{
  // Init reader settings: event selection, basic cluster track cuts, etc
  
  if(simu)
  {
    if (!useKinematics && inputDataType=="AOD") useKinematics = kTRUE; //AOD primary should be available ...
  }
  
  cout<<"********* ACCESS KINE? "<<useKinematics<< endl;

  AliCaloTrackReader * reader = 0;
  if     (inputDataType=="AOD") reader = new AliCaloTrackAODReader();
  else if(inputDataType=="ESD") reader = new AliCaloTrackESDReader();
  else  printf("AliCaloTrackReader::ConfigureReader() - Data not known inputData=%s\n",inputDataType.Data());
  
  reader->SetDebug(debug);//10 for lots of messages
  
  reader->SwitchOffTriggerPatchMatching();
  reader->SwitchOffBadTriggerEventsRemoval();
  
  reader->SwitchOffWriteDeltaAOD()  ;
  
  // MC settings
  if(useKinematics)
  {
    if(inputDataType == "ESD")
    {
      reader->SwitchOnStack();          
      reader->SwitchOffAODMCParticles(); 
    }
    else if(inputDataType == "AOD")
    {
      reader->SwitchOffStack();          
      reader->SwitchOnAODMCParticles(); 
    }
  }  
  
  //------------------------
  // Detector input filling
  //------------------------
  
  //Min cluster/track E
  reader->SetEMCALEMin(0.3); 
  reader->SetEMCALEMax(1000); 
  reader->SetPHOSEMin(0.3);
  reader->SetPHOSEMax(1000);
  reader->SetCTSPtMin(0.2);
  reader->SetCTSPtMax(1000);

  // Time cuts
  if(simu)
  {
    reader->SwitchOffUseTrackTimeCut();
    reader->SwitchOffUseParametrizedTimeCut();
    reader->SwitchOffUseEMCALTimeCut();
    reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
  }
  else
  {
    reader->SwitchOffUseParametrizedTimeCut();

    if(timecut)
    {
      printf("Set time cut \n");
      reader->SwitchOnUseEMCALTimeCut();
      //Absolute window
      reader->SetEMCALTimeCut(tmin,tmax); // default is -25ns-20ns
    }
    else
    {
      printf("Off time cuts time cut \n");
      reader->SwitchOffUseEMCALTimeCut();
      //Absolute window
      reader->SetEMCALTimeCut(-1.e6,1.e6);
    }
  }
  
  reader->SwitchOffFiducialCut();
  reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;

  // Tracks
  reader->SwitchOnCTS();


  reader->SwitchOffRecalculateVertexBC();
  reader->SwitchOffVertexBCEventSelection();
  
if(trackTcut)
  reader->SwitchOnUseTrackTimeCut();
else
  reader->SwitchOffUseTrackTimeCut();

  reader->SetTrackTimeCut(0,50);
  
  reader->SwitchOffUseTrackDCACut();
  //reader->SetTrackDCACut(0,0.0105);
  //reader->SetTrackDCACut(1,0.035);
  //reader->SetTrackDCACut(2,1.1);
  
  if(inputDataType=="ESD")
  {
    gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
    //AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
    //reader->SetTrackCuts(esdTrackCuts);
    //reader->SwitchOnConstrainTrackToVertex();
    
//    if(kYears>2010)
//    {
      //Hybrids 2011
      AliESDtrackCuts * esdTrackCuts  = CreateTrackCutsPWGJE(10001008);
      reader->SetTrackCuts(esdTrackCuts);
      AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
      reader->SetTrackComplementaryCuts(esdTrackCuts2);
//    }
//    else
//    {
//      //Hybrids 2010
//      AliESDtrackCuts * esdTrackCuts  = CreateTrackCutsPWGJE(10001006);
//      reader->SetTrackCuts(esdTrackCuts);
//      AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
//      reader->SetTrackComplementaryCuts(esdTrackCuts2);
//    }
  }
  else if(inputDataType=="AOD")
  {
    //reader->SetTrackFilterMask(128);           // Filter bit, not mask, use if off hybrid
    reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
    reader->SetTrackStatus(AliVTrack::kITSrefit);
    //reader->SwitchOnTrackHitSPDSelection();    // Check that the track has at least a hit on the SPD, not much sense to use for hybrid or TPC only tracks
  }
  
  // Calorimeter
  
  reader->SwitchOffClusterRecalculation();
  
  
  // CAREFUL
  if(!nonlin) reader->SwitchOffClusterELinearityCorrection();
  else        reader->SwitchOnClusterELinearityCorrection();
  
  if(calorimeter == "EMCAL") {
    reader->SwitchOnEMCALCells();
    reader->SwitchOnEMCAL();
  }
  if(calorimeter == "PHOS") { // Should be on if QA is activated with correlation on
    reader->SwitchOffPHOSCells();
    reader->SwitchOffPHOS();
  }
  
  //-----------------
  // Event selection
  //-----------------
  
  //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
  
  // reader->RejectFastClusterEvents() ;
  
  reader->SwitchOnEventTriggerAtSE();
  
  reader->SetZvertexCut(10.);               // Open cut
  if(primvtx)
  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
  else
  reader->SwitchOffPrimaryVertexSelection(); 
  if(notrackcut)
  reader->SwitchOnRejectNoTrackEvents();
  else
  reader->SwitchOffRejectNoTrackEvents();
 
  reader->SwitchOffPileUpEventRejection();   // remove pileup
  reader->SwitchOffV0ANDSelection() ;        // and besides v0 AND

  if(maxCen > 0 )
  {
    // Centrality
    reader->SetCentralityClass("V0M");
    reader->SetCentralityOpt(100);  // 10 (c= 0-10, 10-20 ...), 20  (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
    reader->SetCentralityBin(minCen,maxCen); // Accept all events, if not select range
    
    // Event plane (only used in Maker and mixing for AliAnaPi0/AliAnaHadronCorrelation for the moment)
    reader->SetEventPlaneMethod("V0");
  }
  
  if(print) reader->Print("");
  
  return reader;
    
}

//_______________________________________
AliCalorimeterUtils* ConfigureCaloUtils(Bool_t nonlin = kTRUE, Bool_t exotic = kTRUE ,Bool_t simu = kFALSE, Bool_t timecut = kFALSE, Int_t debug = -1, Bool_t print = kFALSE)
{
  
  AliCalorimeterUtils *cu = new AliCalorimeterUtils;
  cu->SetDebug(debug);
  
  // Remove clusters close to borders, at least max energy cell is 1 cell away 
  cu->SetNumberOfCellsFromEMCALBorder(0);//this was originally set to one
  cu->SetNumberOfCellsFromPHOSBorder(2);
  
  cu->SwitchOffRecalculateClusterTrackMatching();
  
  cu->SwitchOffBadChannelsRemoval() ;
  
  //EMCAL settings

  if(simu)
    cu->SwitchOnLoadOwnEMCALGeometryMatrices();
  
  /*  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
  
  cu->SwitchOffRecalibration();
  cu->SwitchOffRunDepCorrection();
  
  gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/ConfigureEMCALRecoUtils.C");
  ConfigureEMCALRecoUtils(recou,
                          simu,
                          exotic,
                          nonlin,
                          kFALSE, // e calib
                          kFALSE, // bad map
                          kFALSE); // time calib
  if(timecut) recou->SetExoticCellDiffTimeCut(50.);
  */
  if( nonlin)
  { 
    printf("ConfigureCaloUtils() - Apply non linearity to EMCAL\n");
    cu->SwitchOnCorrectClusterLinearity();
  }
  /*   
  printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
  printf("ConfigureCaloUtils() - EMCAL BadMap        ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
  */
  cu->SetNumberOfSuperModulesUsed(10);

  if(print) cu->Print("");
  
  return cu;
  
}

//_____________________________________
AliAnaPhoton* ConfigurePhotonAnalysis(TString calorimeter = "EMCAL", Bool_t tm = kFALSE, Float_t deltaphicut = 0.02, Float_t deltaetacut = 0.03,Int_t disttobad=0,Int_t nlmMax = 2, Bool_t simu = kFALSE, Int_t debug = -1, Bool_t print = kFALSE)
{
  
  AliAnaPhoton *ana = new AliAnaPhoton();
  ana->SetDebug(debug); //10 for lots of messages
  
  // cluster selection cuts
  
  ana->SwitchOffFiducialCut();

  ana->SetCalorimeter(calorimeter);
  
  if(calorimeter == "PHOS")
  {
    ana->SetNCellCut(2);// At least 3 cells
    ana->SetMinPt(0.3);
    ana->SetMinDistanceToBadChannel(2, 4, 5);
    ana->SetTimeCut(-1e10,1e10); // open cut
  }
  else 
  {//EMCAL
    ana->SetNCellCut(1);// At least 2 cells
    ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
    ana->SetMaxEnergy(1000); 
    //    ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off 
    // restrict to less than 100 ns when time calibration is on 
    ana->SetMinDistanceToBadChannel(disttobad, 4, 6); 
    
    // NLM cut, used in all, exclude clusters with more than 2 maxima
    // Not needed if M02 cut is already strong or clusterizer V2
    ana->SetNLMCut(1, nlmMax) ;
  }
  
  if(tm)
  {
    ana->SwitchOnTrackMatchRejection() ;
    ana->SwitchOffTMHistoFill() ;
  }
  else
  {
    ana->SwitchOffTrackMatchRejection() ;
    ana->SwitchOnTMHistoFill() ;
  }
  
  //PID cuts (shower shape)
  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
  AliCaloPID* caloPID = ana->GetCaloPID();
  //Not used in bayesian
  
  //EMCAL
  caloPID->SetEMCALLambda0CutMax(1000.);
  caloPID->SetEMCALLambda0CutMin(0.);
  
  // caloPID->SetEMCALDEtaCut(0.025);
  // caloPID->SetEMCALDPhiCut(0.030);
  caloPID->SetEMCALDEtaCut(deltaetacut);
  caloPID->SetEMCALDPhiCut(deltaphicut);

  ana->SwitchOnFillShowerShapeHistograms();  // Filled before photon shower shape selection
  if(!simu) ana->SwitchOnFillPileUpHistograms();

  // Input / output delta AOD settings
  
  ana->SetOutputAODName(Form("Photon%s",kAnaIsoPhotonName.Data()));
  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
  
  //Set Histograms name tag, bins and ranges
  
  ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",tm));
  SetHistoRangeAndNBins(ana->GetHistogramRanges(), calorimeter); // see method below
  
  // Number of particle type MC histograms
  ana->FillNOriginHistograms(20);
  ana->FillNPrimaryHistograms(20);
  
  ConfigureMC(ana,simu);
  
  if(print) ana->Print("");
  
  return ana;
  
}

//____________________________________________________________________________________________________
AliAnaParticleIsolation* ConfigureIsolationAnalysis(TString calorimeter = "EMCAL", TString particle="Photon",
                                                    Int_t  partInCone = AliIsolationCut::kOnlyCharged,
                                                    Int_t  thresType  = AliIsolationCut::kSumPtFracIC,
                                                    Float_t cone = 0.3,
                                                    Float_t pth  = 0.3,
                                                    Bool_t tm = kFALSE, 
                                                    Bool_t leading = kTRUE,
                                                    Bool_t multi = kFALSE, Bool_t simu = kFALSE,
                                                    Int_t debug = -1, Bool_t print = kFALSE)
{
  
  AliAnaParticleIsolation *ana = new AliAnaParticleIsolation();
  ana->SetDebug(debug);
  
  ana->SwitchOnFiducialCut();
  //Avoid borders of EMCal
  if(calorimeter=="EMCAL")
  {
    //ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.6, 86, 174) ;
    ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.27, 103, 157) ;
  }
  
  ana->SetMinPt(5);
  
  // Input / output delta AOD settings
  
  ana->SetInputAODName(Form("%s%s",particle.Data(),kAnaIsoPhotonName.Data()));
  ana->SetAODObjArrayName(Form("IC%s_%s",particle.Data(),kAnaIsoPhotonName.Data())); 
  
  ana->SetCalorimeter(calorimeter);
  
  if(!tm)  ana->SwitchOnTMHistoFill();
  else     ana->SwitchOffTMHistoFill();
  //   ana->SwitchOnTMHistoFill();
 
  // ana->SwitchOffSSHistoFill();
  // if(!kSimulation) ana->SwitchOnFillPileUpHistograms();
   ana->SwitchOnSSHistoFill();
  if(leading) ana->SwitchOnLeadingOnly();
  else ana->SwitchOffLeadingOnly();
  if(!simu) ana->SwitchOnFillPileUpHistograms();

  //Do settings for main isolation cut class
  AliIsolationCut * ic =  ana->GetIsolationCut();	
  ic->SetDebug(debug);
  
  printf("\t *** Set: R = %2.2f, Threshold %2.2f, Method %d, Neutral/Charged option %d ***\n",cone,pth,thresType,partInCone);
  
  //Main parameters
  //****
  ic->SetConeSize(cone);
  
  ic->SetPtFraction    (0.1);
  ic->SetPtThreshold   (pth);
  ic->SetSumPtThreshold(pth);
  
  ic->SetParticleTypeInCone(partInCone);
  
  ic->SetICMethod(thresType);
  //****
  
  //Do or not do isolation with previously produced AODs.
  //No effect if use of SwitchOnSeveralIsolation()
  ana->SwitchOffReIsolation();
  
  //Multiple IC
  if(multi) 
  {
    ic->SetConeSize(1.);    // Take all for first iteration
    ic->SetPtThreshold(100);// Take all for first iteration
    ana->SwitchOnSeveralIsolation() ;
    ana->SetAODObjArrayName(Form("MultiIC%sTM%d",particle.Data(),tm));
     
    ana->SetNCones(4);
    ana->SetNPtThresFrac(4);
    ana->SetConeSizes(0,0.3);       ana->SetConeSizes(1,0.4);
    ana->SetConeSizes(2,0.5);       ana->SetConeSizes(3,0.6);
    ana->SetPtThresholds(0, 0.5);   ana->SetPtThresholds(1, 1);     ana->SetPtThresholds(2, 2);
    ana->SetPtFractions (0, 0.05) ; ana->SetPtFractions (1, 0.1);   ana->SetPtFractions (2, 0.2) ;  ana->SetPtFractions (3, 0.3) ;
    ana->SetSumPtThresholds(0, 1) ; ana->SetSumPtThresholds(1, 3) ; ana->SetSumPtThresholds(2, 5);  ana->SetSumPtThresholds(3, 7)  ;
    
    ana->SwitchOffTMHistoFill();
    ana->SwitchOffSSHistoFill();
  }
  else      
    ana->SwitchOffSeveralIsolation() ;
  
  AliCaloPID* caloPID = ana->GetCaloPID();
  caloPID->SetEMCALDEtaCut(0.02);
  caloPID->SetEMCALDPhiCut(0.030);
  
  //Set Histograms name tag, bins and ranges
  
  if(!multi)ana->AddToHistogramsName(Form("AnaIsol%s_TM%d_",particle.Data(),tm));
  else      ana->AddToHistogramsName(Form("AnaMultiIsol%s_TM%d_",particle.Data(),tm));

  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
  
  if(particle=="Hadron"  || particle.Contains("CTS"))
  {
    ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
    ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
  }
  
  ConfigureMC(ana,simu);
  
  if(print) ic ->Print("");
  if(print) ana->Print("");
  
  return ana;
  
}


//________________________________________
AliAnaCalorimeterQA* ConfigureQAAnalysis(TString calorimeter = "EMCAL", Bool_t simu = kFALSE, Int_t debug = -1, Bool_t print = kFALSE)
{
  
  AliAnaCalorimeterQA *ana = new AliAnaCalorimeterQA();
  ana->SetDebug(debug); //10 for lots of messages
  ana->SetCalorimeter(calorimeter);
  
  ana->SetTimeCut(-1e10,1e10); // Open time cut
  ana->SwitchOffCorrelation();
  
  // Study exotic clusters PHOS and EMCAL
  ana->SwitchOffStudyBadClusters() ;
  
  
  ana->SwitchOffFiducialCut();
  ana->SwitchOffFillAllTH3Histogram();
  ana->SwitchOffFillAllPositionHistogram();
  ana->SwitchOffFillAllPositionHistogram2();
  ana->SwitchOffStudyBadClusters();
  ana->SwitchOffStudyClustersAsymmetry();
  ana->SwitchOffStudyWeight();
  ana->SwitchOnFillAllTrackMatchingHistogram();
  ana->SwitchOnFillAllCellTimeHisto() ;

  
  ana->AddToHistogramsName("QA_"); //Begining of histograms name
  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
  
  ConfigureMC(ana,simu);
  
  if(print) ana->Print("");
  
  return ana;
  
}

//___________________________________________________________________________________
AliAnaChargedParticles* ConfigureChargedAnalysis(Bool_t simulation, Int_t debugLevel)
{
  
  AliAnaChargedParticles *ana = new AliAnaChargedParticles();
  ana->SetDebug(debugLevel); //10 for lots of messages
  
  // selection cuts
  
  ana->SetMinPt(0.5);
  ana->SwitchOnFiducialCut();
  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
  
  ana->SwitchOffFillVertexBC0Histograms() ;
  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
  
  // Input / output delta AOD settings
  
  ana->SetOutputAODName(Form("Hadron%s",kAnaIsoPhotonName.Data()));
  ana->SetOutputAODClassName("AliAODPWG4Particle");
  ana->SetInputAODName(Form("Hadron%s",kAnaIsoPhotonName.Data()));
  
  //Set Histograms name tag, bins and ranges
  
  ana->AddToHistogramsName("AnaHadrons_");
  SetHistoRangeAndNBins(ana->GetHistogramRanges(),""); // see method below
  
  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
  
  if(debugLevel > 0) ana->Print("");
  
  return ana;
  
}

AliAnaRandomTrigger* ConfigureRandomTriggerAnalysis(TString detector = "")
{
  
  AliAnaRandomTrigger *ana = new AliAnaRandomTrigger();
  ana->SetDebug(kDebug); //10 for lots of messages
  
  if(detector=="") detector = kCalorimeter;
  ana->SetDetector(detector);

  // selection cuts
  ana->SetMinPt(4.); 
  ana->SetMaxPt(61.);   
  
  if     (detector=="EMCAL")
  {
    ana->SetEtaCut(-0.27,0.27);
    ana->SetPhiCut(103*TMath::DegToRad(), 157*TMath::DegToRad());
  }
  else if(detector=="PHOS")
  {
    ana->SetEtaCut(-0.13,0.13);
    ana->SetPhiCut(260*TMath::DegToRad(), 320*TMath::DegToRad());
  }
  else if(detector=="CTS")
  {
    ana->SetEtaCut(-0.9,0.9);
    ana->SetPhiCut(0, TMath::TwoPi());
  }
  
  // AOD branch
  if(!kData.Contains("delta")) 
  {
    ana->SetOutputAODName(Form("RandomTrigger%s%s",detector.Data(),kAnaIsoPhotonName.Data()));
    ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
  }
  else 
    ana->SetInputAODName(Form("RandomTrigger%s%s",detector.Data(),kAnaIsoPhotonName.Data()));
  
  printf("Set RandomTrigger%s%s\n",detector.Data(),kAnaIsoPhotonName.Data());
  
  //Set Histograms name tag, bins and ranges
  
  ana->AddToHistogramsName(Form("AnaRandomTrigger%s_",detector.Data()));
  
  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
  
  if(detector=="CTS")
  {
    ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
    ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
  }
  
  if(kPrint) ana->Print("");
  
  return ana;
  
}



//________________________________________________________
void ConfigureMC(AliAnaCaloTrackCorrBaseClass* ana, Bool_t simu = kFALSE)
{
  if(simu) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
  else     ana->SwitchOffDataMC() ;

  //Set here generator name, default pythia
  //ana->GetMCAnalysisUtils()->SetMCGenerator("");
}  

//________________________________________________________
void SetHistoRangeAndNBins (AliHistogramRanges* histoRanges, TString calorimeter = "EMCAL")
{
  // Set common bins for all analysis and MC histograms filling
    
  histoRanges->SetHistoPtRangeAndNBins(0., 100., 200) ; // Energy and pt histograms
  
  if(calorimeter=="EMCAL")
  {
    
    histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
    histoRanges->SetHistoXRangeAndNBins(-600,90,200); // QA
    histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA

    histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
  }
  else
  {
    histoRanges->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 320*TMath::DegToRad(), 60) ;
    histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
  }
  
  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
  
  // Invariant mass histoRangeslysis
  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
  
  // check if time calibration is on
  histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
  
  // track-cluster residuals
  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
  histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA

  // QA, electron, charged
  histoRanges->SetHistoPOverERangeAndNBins(0,  2.5 ,500);
  histoRanges->SetHistodEdxRangeAndNBins  (0.,250.0,500);
  
  // QA
  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,100);
  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
  histoRanges->SetHistoZRangeAndNBins(-400,400,200);
  histoRanges->SetHistoRRangeAndNBins(400,450,25);
  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,5000,500);
  
  // Isolation
  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
  histoRanges->SetHistoPtSumRangeAndNBins   (0, 100, 250);
  
}

//_____________________________
UInt_t SetTriggerMaskFromName(TString trigger)
{
  if(trigger=="EMC7")
  {
    printf("CaloTrackCorr trigger EMC7\n");
    return AliVEvent::kEMC7;
  }
  else if (trigger=="INT7")
  {
    printf("CaloTrackCorr trigger INT7\n");
    return AliVEvent::kINT7;
  }
  else if(trigger=="EMC1")
  {
    printf("CaloTrackCorr trigger EMC1\n");
    return AliVEvent::kEMC1;
  }
  else if(trigger=="MB")
  {
    printf("CaloTrackCorr trigger MB\n");
    return AliVEvent::kMB;
  }  
  else if(trigger=="PHOS")
  {
    printf("CaloTrackCorr trigger PHOS\n");
    return AliVEvent::kPHI7;
  }  
  else if(trigger=="PHOSPb")
  {
    printf("CaloTrackCorr trigger PHOSPb\n");
    return AliVEvent::kPHOSPb;
  }
  else if(trigger=="AnyINT")
  {
    printf("CaloTrackCorr trigger AnyINT\n");
    return AliVEvent::kAnyINT;
  }  
  else if(trigger=="INT")
  {
    printf("CaloTrackCorr trigger AnyINT\n");
    return AliVEvent::kAny;
  }
  else if(trigger=="EMCEGA")
  {
    printf("CaloTrackCorr trigger EMC Gamma\n");
    return AliVEvent::kEMCEGA;
  } 
  else if(trigger=="EMCEJE")
  {
    printf("CaloTrackCorr trigger EMC Jet\n");
    return AliVEvent::kEMCEJE;
  }
  else if(trigger=="Central")
  {
    printf("CaloTrackCorr trigger Central\n");
    return (AliVEvent::kCentral  | AliVEvent::kMB);
  }
  else if(trigger=="CentralEGA")
  {
    printf("CaloTrackCorr trigger Central+EMCEGA\n");
    return (AliVEvent::kCentral | AliVEvent::kEMCEGA);
  }
  else if(trigger=="SemiCentral")
  {
    printf("CaloTrackCorr trigger SemiCentral\n");
    return (AliVEvent::kSemiCentral | AliVEvent::kMB);
  }
  else if(trigger=="SemiOrCentral")
  {
    printf("CaloTrackCorr trigger SemiCentral Or Central\n");
    return (AliVEvent::kSemiCentral | AliVEvent::kCentral  | AliVEvent::kMB);
  }
}


 AddTaskIsoPhoton.C:1
 AddTaskIsoPhoton.C:2
 AddTaskIsoPhoton.C:3
 AddTaskIsoPhoton.C:4
 AddTaskIsoPhoton.C:5
 AddTaskIsoPhoton.C:6
 AddTaskIsoPhoton.C:7
 AddTaskIsoPhoton.C:8
 AddTaskIsoPhoton.C:9
 AddTaskIsoPhoton.C:10
 AddTaskIsoPhoton.C:11
 AddTaskIsoPhoton.C:12
 AddTaskIsoPhoton.C:13
 AddTaskIsoPhoton.C:14
 AddTaskIsoPhoton.C:15
 AddTaskIsoPhoton.C:16
 AddTaskIsoPhoton.C:17
 AddTaskIsoPhoton.C:18
 AddTaskIsoPhoton.C:19
 AddTaskIsoPhoton.C:20
 AddTaskIsoPhoton.C:21
 AddTaskIsoPhoton.C:22
 AddTaskIsoPhoton.C:23
 AddTaskIsoPhoton.C:24
 AddTaskIsoPhoton.C:25
 AddTaskIsoPhoton.C:26
 AddTaskIsoPhoton.C:27
 AddTaskIsoPhoton.C:28
 AddTaskIsoPhoton.C:29
 AddTaskIsoPhoton.C:30
 AddTaskIsoPhoton.C:31
 AddTaskIsoPhoton.C:32
 AddTaskIsoPhoton.C:33
 AddTaskIsoPhoton.C:34
 AddTaskIsoPhoton.C:35
 AddTaskIsoPhoton.C:36
 AddTaskIsoPhoton.C:37
 AddTaskIsoPhoton.C:38
 AddTaskIsoPhoton.C:39
 AddTaskIsoPhoton.C:40
 AddTaskIsoPhoton.C:41
 AddTaskIsoPhoton.C:42
 AddTaskIsoPhoton.C:43
 AddTaskIsoPhoton.C:44
 AddTaskIsoPhoton.C:45
 AddTaskIsoPhoton.C:46
 AddTaskIsoPhoton.C:47
 AddTaskIsoPhoton.C:48
 AddTaskIsoPhoton.C:49
 AddTaskIsoPhoton.C:50
 AddTaskIsoPhoton.C:51
 AddTaskIsoPhoton.C:52
 AddTaskIsoPhoton.C:53
 AddTaskIsoPhoton.C:54
 AddTaskIsoPhoton.C:55
 AddTaskIsoPhoton.C:56
 AddTaskIsoPhoton.C:57
 AddTaskIsoPhoton.C:58
 AddTaskIsoPhoton.C:59
 AddTaskIsoPhoton.C:60
 AddTaskIsoPhoton.C:61
 AddTaskIsoPhoton.C:62
 AddTaskIsoPhoton.C:63
 AddTaskIsoPhoton.C:64
 AddTaskIsoPhoton.C:65
 AddTaskIsoPhoton.C:66
 AddTaskIsoPhoton.C:67
 AddTaskIsoPhoton.C:68
 AddTaskIsoPhoton.C:69
 AddTaskIsoPhoton.C:70
 AddTaskIsoPhoton.C:71
 AddTaskIsoPhoton.C:72
 AddTaskIsoPhoton.C:73
 AddTaskIsoPhoton.C:74
 AddTaskIsoPhoton.C:75
 AddTaskIsoPhoton.C:76
 AddTaskIsoPhoton.C:77
 AddTaskIsoPhoton.C:78
 AddTaskIsoPhoton.C:79
 AddTaskIsoPhoton.C:80
 AddTaskIsoPhoton.C:81
 AddTaskIsoPhoton.C:82
 AddTaskIsoPhoton.C:83
 AddTaskIsoPhoton.C:84
 AddTaskIsoPhoton.C:85
 AddTaskIsoPhoton.C:86
 AddTaskIsoPhoton.C:87
 AddTaskIsoPhoton.C:88
 AddTaskIsoPhoton.C:89
 AddTaskIsoPhoton.C:90
 AddTaskIsoPhoton.C:91
 AddTaskIsoPhoton.C:92
 AddTaskIsoPhoton.C:93
 AddTaskIsoPhoton.C:94
 AddTaskIsoPhoton.C:95
 AddTaskIsoPhoton.C:96
 AddTaskIsoPhoton.C:97
 AddTaskIsoPhoton.C:98
 AddTaskIsoPhoton.C:99
 AddTaskIsoPhoton.C:100
 AddTaskIsoPhoton.C:101
 AddTaskIsoPhoton.C:102
 AddTaskIsoPhoton.C:103
 AddTaskIsoPhoton.C:104
 AddTaskIsoPhoton.C:105
 AddTaskIsoPhoton.C:106
 AddTaskIsoPhoton.C:107
 AddTaskIsoPhoton.C:108
 AddTaskIsoPhoton.C:109
 AddTaskIsoPhoton.C:110
 AddTaskIsoPhoton.C:111
 AddTaskIsoPhoton.C:112
 AddTaskIsoPhoton.C:113
 AddTaskIsoPhoton.C:114
 AddTaskIsoPhoton.C:115
 AddTaskIsoPhoton.C:116
 AddTaskIsoPhoton.C:117
 AddTaskIsoPhoton.C:118
 AddTaskIsoPhoton.C:119
 AddTaskIsoPhoton.C:120
 AddTaskIsoPhoton.C:121
 AddTaskIsoPhoton.C:122
 AddTaskIsoPhoton.C:123
 AddTaskIsoPhoton.C:124
 AddTaskIsoPhoton.C:125
 AddTaskIsoPhoton.C:126
 AddTaskIsoPhoton.C:127
 AddTaskIsoPhoton.C:128
 AddTaskIsoPhoton.C:129
 AddTaskIsoPhoton.C:130
 AddTaskIsoPhoton.C:131
 AddTaskIsoPhoton.C:132
 AddTaskIsoPhoton.C:133
 AddTaskIsoPhoton.C:134
 AddTaskIsoPhoton.C:135
 AddTaskIsoPhoton.C:136
 AddTaskIsoPhoton.C:137
 AddTaskIsoPhoton.C:138
 AddTaskIsoPhoton.C:139
 AddTaskIsoPhoton.C:140
 AddTaskIsoPhoton.C:141
 AddTaskIsoPhoton.C:142
 AddTaskIsoPhoton.C:143
 AddTaskIsoPhoton.C:144
 AddTaskIsoPhoton.C:145
 AddTaskIsoPhoton.C:146
 AddTaskIsoPhoton.C:147
 AddTaskIsoPhoton.C:148
 AddTaskIsoPhoton.C:149
 AddTaskIsoPhoton.C:150
 AddTaskIsoPhoton.C:151
 AddTaskIsoPhoton.C:152
 AddTaskIsoPhoton.C:153
 AddTaskIsoPhoton.C:154
 AddTaskIsoPhoton.C:155
 AddTaskIsoPhoton.C:156
 AddTaskIsoPhoton.C:157
 AddTaskIsoPhoton.C:158
 AddTaskIsoPhoton.C:159
 AddTaskIsoPhoton.C:160
 AddTaskIsoPhoton.C:161
 AddTaskIsoPhoton.C:162
 AddTaskIsoPhoton.C:163
 AddTaskIsoPhoton.C:164
 AddTaskIsoPhoton.C:165
 AddTaskIsoPhoton.C:166
 AddTaskIsoPhoton.C:167
 AddTaskIsoPhoton.C:168
 AddTaskIsoPhoton.C:169
 AddTaskIsoPhoton.C:170
 AddTaskIsoPhoton.C:171
 AddTaskIsoPhoton.C:172
 AddTaskIsoPhoton.C:173
 AddTaskIsoPhoton.C:174
 AddTaskIsoPhoton.C:175
 AddTaskIsoPhoton.C:176
 AddTaskIsoPhoton.C:177
 AddTaskIsoPhoton.C:178
 AddTaskIsoPhoton.C:179
 AddTaskIsoPhoton.C:180
 AddTaskIsoPhoton.C:181
 AddTaskIsoPhoton.C:182
 AddTaskIsoPhoton.C:183
 AddTaskIsoPhoton.C:184
 AddTaskIsoPhoton.C:185
 AddTaskIsoPhoton.C:186
 AddTaskIsoPhoton.C:187
 AddTaskIsoPhoton.C:188
 AddTaskIsoPhoton.C:189
 AddTaskIsoPhoton.C:190
 AddTaskIsoPhoton.C:191
 AddTaskIsoPhoton.C:192
 AddTaskIsoPhoton.C:193
 AddTaskIsoPhoton.C:194
 AddTaskIsoPhoton.C:195
 AddTaskIsoPhoton.C:196
 AddTaskIsoPhoton.C:197
 AddTaskIsoPhoton.C:198
 AddTaskIsoPhoton.C:199
 AddTaskIsoPhoton.C:200
 AddTaskIsoPhoton.C:201
 AddTaskIsoPhoton.C:202
 AddTaskIsoPhoton.C:203
 AddTaskIsoPhoton.C:204
 AddTaskIsoPhoton.C:205
 AddTaskIsoPhoton.C:206
 AddTaskIsoPhoton.C:207
 AddTaskIsoPhoton.C:208
 AddTaskIsoPhoton.C:209
 AddTaskIsoPhoton.C:210
 AddTaskIsoPhoton.C:211
 AddTaskIsoPhoton.C:212
 AddTaskIsoPhoton.C:213
 AddTaskIsoPhoton.C:214
 AddTaskIsoPhoton.C:215
 AddTaskIsoPhoton.C:216
 AddTaskIsoPhoton.C:217
 AddTaskIsoPhoton.C:218
 AddTaskIsoPhoton.C:219
 AddTaskIsoPhoton.C:220
 AddTaskIsoPhoton.C:221
 AddTaskIsoPhoton.C:222
 AddTaskIsoPhoton.C:223
 AddTaskIsoPhoton.C:224
 AddTaskIsoPhoton.C:225
 AddTaskIsoPhoton.C:226
 AddTaskIsoPhoton.C:227
 AddTaskIsoPhoton.C:228
 AddTaskIsoPhoton.C:229
 AddTaskIsoPhoton.C:230
 AddTaskIsoPhoton.C:231
 AddTaskIsoPhoton.C:232
 AddTaskIsoPhoton.C:233
 AddTaskIsoPhoton.C:234
 AddTaskIsoPhoton.C:235
 AddTaskIsoPhoton.C:236
 AddTaskIsoPhoton.C:237
 AddTaskIsoPhoton.C:238
 AddTaskIsoPhoton.C:239
 AddTaskIsoPhoton.C:240
 AddTaskIsoPhoton.C:241
 AddTaskIsoPhoton.C:242
 AddTaskIsoPhoton.C:243
 AddTaskIsoPhoton.C:244
 AddTaskIsoPhoton.C:245
 AddTaskIsoPhoton.C:246
 AddTaskIsoPhoton.C:247
 AddTaskIsoPhoton.C:248
 AddTaskIsoPhoton.C:249
 AddTaskIsoPhoton.C:250
 AddTaskIsoPhoton.C:251
 AddTaskIsoPhoton.C:252
 AddTaskIsoPhoton.C:253
 AddTaskIsoPhoton.C:254
 AddTaskIsoPhoton.C:255
 AddTaskIsoPhoton.C:256
 AddTaskIsoPhoton.C:257
 AddTaskIsoPhoton.C:258
 AddTaskIsoPhoton.C:259
 AddTaskIsoPhoton.C:260
 AddTaskIsoPhoton.C:261
 AddTaskIsoPhoton.C:262
 AddTaskIsoPhoton.C:263
 AddTaskIsoPhoton.C:264
 AddTaskIsoPhoton.C:265
 AddTaskIsoPhoton.C:266
 AddTaskIsoPhoton.C:267
 AddTaskIsoPhoton.C:268
 AddTaskIsoPhoton.C:269
 AddTaskIsoPhoton.C:270
 AddTaskIsoPhoton.C:271
 AddTaskIsoPhoton.C:272
 AddTaskIsoPhoton.C:273
 AddTaskIsoPhoton.C:274
 AddTaskIsoPhoton.C:275
 AddTaskIsoPhoton.C:276
 AddTaskIsoPhoton.C:277
 AddTaskIsoPhoton.C:278
 AddTaskIsoPhoton.C:279
 AddTaskIsoPhoton.C:280
 AddTaskIsoPhoton.C:281
 AddTaskIsoPhoton.C:282
 AddTaskIsoPhoton.C:283
 AddTaskIsoPhoton.C:284
 AddTaskIsoPhoton.C:285
 AddTaskIsoPhoton.C:286
 AddTaskIsoPhoton.C:287
 AddTaskIsoPhoton.C:288
 AddTaskIsoPhoton.C:289
 AddTaskIsoPhoton.C:290
 AddTaskIsoPhoton.C:291
 AddTaskIsoPhoton.C:292
 AddTaskIsoPhoton.C:293
 AddTaskIsoPhoton.C:294
 AddTaskIsoPhoton.C:295
 AddTaskIsoPhoton.C:296
 AddTaskIsoPhoton.C:297
 AddTaskIsoPhoton.C:298
 AddTaskIsoPhoton.C:299
 AddTaskIsoPhoton.C:300
 AddTaskIsoPhoton.C:301
 AddTaskIsoPhoton.C:302
 AddTaskIsoPhoton.C:303
 AddTaskIsoPhoton.C:304
 AddTaskIsoPhoton.C:305
 AddTaskIsoPhoton.C:306
 AddTaskIsoPhoton.C:307
 AddTaskIsoPhoton.C:308
 AddTaskIsoPhoton.C:309
 AddTaskIsoPhoton.C:310
 AddTaskIsoPhoton.C:311
 AddTaskIsoPhoton.C:312
 AddTaskIsoPhoton.C:313
 AddTaskIsoPhoton.C:314
 AddTaskIsoPhoton.C:315
 AddTaskIsoPhoton.C:316
 AddTaskIsoPhoton.C:317
 AddTaskIsoPhoton.C:318
 AddTaskIsoPhoton.C:319
 AddTaskIsoPhoton.C:320
 AddTaskIsoPhoton.C:321
 AddTaskIsoPhoton.C:322
 AddTaskIsoPhoton.C:323
 AddTaskIsoPhoton.C:324
 AddTaskIsoPhoton.C:325
 AddTaskIsoPhoton.C:326
 AddTaskIsoPhoton.C:327
 AddTaskIsoPhoton.C:328
 AddTaskIsoPhoton.C:329
 AddTaskIsoPhoton.C:330
 AddTaskIsoPhoton.C:331
 AddTaskIsoPhoton.C:332
 AddTaskIsoPhoton.C:333
 AddTaskIsoPhoton.C:334
 AddTaskIsoPhoton.C:335
 AddTaskIsoPhoton.C:336
 AddTaskIsoPhoton.C:337
 AddTaskIsoPhoton.C:338
 AddTaskIsoPhoton.C:339
 AddTaskIsoPhoton.C:340
 AddTaskIsoPhoton.C:341
 AddTaskIsoPhoton.C:342
 AddTaskIsoPhoton.C:343
 AddTaskIsoPhoton.C:344
 AddTaskIsoPhoton.C:345
 AddTaskIsoPhoton.C:346
 AddTaskIsoPhoton.C:347
 AddTaskIsoPhoton.C:348
 AddTaskIsoPhoton.C:349
 AddTaskIsoPhoton.C:350
 AddTaskIsoPhoton.C:351
 AddTaskIsoPhoton.C:352
 AddTaskIsoPhoton.C:353
 AddTaskIsoPhoton.C:354
 AddTaskIsoPhoton.C:355
 AddTaskIsoPhoton.C:356
 AddTaskIsoPhoton.C:357
 AddTaskIsoPhoton.C:358
 AddTaskIsoPhoton.C:359
 AddTaskIsoPhoton.C:360
 AddTaskIsoPhoton.C:361
 AddTaskIsoPhoton.C:362
 AddTaskIsoPhoton.C:363
 AddTaskIsoPhoton.C:364
 AddTaskIsoPhoton.C:365
 AddTaskIsoPhoton.C:366
 AddTaskIsoPhoton.C:367
 AddTaskIsoPhoton.C:368
 AddTaskIsoPhoton.C:369
 AddTaskIsoPhoton.C:370
 AddTaskIsoPhoton.C:371
 AddTaskIsoPhoton.C:372
 AddTaskIsoPhoton.C:373
 AddTaskIsoPhoton.C:374
 AddTaskIsoPhoton.C:375
 AddTaskIsoPhoton.C:376
 AddTaskIsoPhoton.C:377
 AddTaskIsoPhoton.C:378
 AddTaskIsoPhoton.C:379
 AddTaskIsoPhoton.C:380
 AddTaskIsoPhoton.C:381
 AddTaskIsoPhoton.C:382
 AddTaskIsoPhoton.C:383
 AddTaskIsoPhoton.C:384
 AddTaskIsoPhoton.C:385
 AddTaskIsoPhoton.C:386
 AddTaskIsoPhoton.C:387
 AddTaskIsoPhoton.C:388
 AddTaskIsoPhoton.C:389
 AddTaskIsoPhoton.C:390
 AddTaskIsoPhoton.C:391
 AddTaskIsoPhoton.C:392
 AddTaskIsoPhoton.C:393
 AddTaskIsoPhoton.C:394
 AddTaskIsoPhoton.C:395
 AddTaskIsoPhoton.C:396
 AddTaskIsoPhoton.C:397
 AddTaskIsoPhoton.C:398
 AddTaskIsoPhoton.C:399
 AddTaskIsoPhoton.C:400
 AddTaskIsoPhoton.C:401
 AddTaskIsoPhoton.C:402
 AddTaskIsoPhoton.C:403
 AddTaskIsoPhoton.C:404
 AddTaskIsoPhoton.C:405
 AddTaskIsoPhoton.C:406
 AddTaskIsoPhoton.C:407
 AddTaskIsoPhoton.C:408
 AddTaskIsoPhoton.C:409
 AddTaskIsoPhoton.C:410
 AddTaskIsoPhoton.C:411
 AddTaskIsoPhoton.C:412
 AddTaskIsoPhoton.C:413
 AddTaskIsoPhoton.C:414
 AddTaskIsoPhoton.C:415
 AddTaskIsoPhoton.C:416
 AddTaskIsoPhoton.C:417
 AddTaskIsoPhoton.C:418
 AddTaskIsoPhoton.C:419
 AddTaskIsoPhoton.C:420
 AddTaskIsoPhoton.C:421
 AddTaskIsoPhoton.C:422
 AddTaskIsoPhoton.C:423
 AddTaskIsoPhoton.C:424
 AddTaskIsoPhoton.C:425
 AddTaskIsoPhoton.C:426
 AddTaskIsoPhoton.C:427
 AddTaskIsoPhoton.C:428
 AddTaskIsoPhoton.C:429
 AddTaskIsoPhoton.C:430
 AddTaskIsoPhoton.C:431
 AddTaskIsoPhoton.C:432
 AddTaskIsoPhoton.C:433
 AddTaskIsoPhoton.C:434
 AddTaskIsoPhoton.C:435
 AddTaskIsoPhoton.C:436
 AddTaskIsoPhoton.C:437
 AddTaskIsoPhoton.C:438
 AddTaskIsoPhoton.C:439
 AddTaskIsoPhoton.C:440
 AddTaskIsoPhoton.C:441
 AddTaskIsoPhoton.C:442
 AddTaskIsoPhoton.C:443
 AddTaskIsoPhoton.C:444
 AddTaskIsoPhoton.C:445
 AddTaskIsoPhoton.C:446
 AddTaskIsoPhoton.C:447
 AddTaskIsoPhoton.C:448
 AddTaskIsoPhoton.C:449
 AddTaskIsoPhoton.C:450
 AddTaskIsoPhoton.C:451
 AddTaskIsoPhoton.C:452
 AddTaskIsoPhoton.C:453
 AddTaskIsoPhoton.C:454
 AddTaskIsoPhoton.C:455
 AddTaskIsoPhoton.C:456
 AddTaskIsoPhoton.C:457
 AddTaskIsoPhoton.C:458
 AddTaskIsoPhoton.C:459
 AddTaskIsoPhoton.C:460
 AddTaskIsoPhoton.C:461
 AddTaskIsoPhoton.C:462
 AddTaskIsoPhoton.C:463
 AddTaskIsoPhoton.C:464
 AddTaskIsoPhoton.C:465
 AddTaskIsoPhoton.C:466
 AddTaskIsoPhoton.C:467
 AddTaskIsoPhoton.C:468
 AddTaskIsoPhoton.C:469
 AddTaskIsoPhoton.C:470
 AddTaskIsoPhoton.C:471
 AddTaskIsoPhoton.C:472
 AddTaskIsoPhoton.C:473
 AddTaskIsoPhoton.C:474
 AddTaskIsoPhoton.C:475
 AddTaskIsoPhoton.C:476
 AddTaskIsoPhoton.C:477
 AddTaskIsoPhoton.C:478
 AddTaskIsoPhoton.C:479
 AddTaskIsoPhoton.C:480
 AddTaskIsoPhoton.C:481
 AddTaskIsoPhoton.C:482
 AddTaskIsoPhoton.C:483
 AddTaskIsoPhoton.C:484
 AddTaskIsoPhoton.C:485
 AddTaskIsoPhoton.C:486
 AddTaskIsoPhoton.C:487
 AddTaskIsoPhoton.C:488
 AddTaskIsoPhoton.C:489
 AddTaskIsoPhoton.C:490
 AddTaskIsoPhoton.C:491
 AddTaskIsoPhoton.C:492
 AddTaskIsoPhoton.C:493
 AddTaskIsoPhoton.C:494
 AddTaskIsoPhoton.C:495
 AddTaskIsoPhoton.C:496
 AddTaskIsoPhoton.C:497
 AddTaskIsoPhoton.C:498
 AddTaskIsoPhoton.C:499
 AddTaskIsoPhoton.C:500
 AddTaskIsoPhoton.C:501
 AddTaskIsoPhoton.C:502
 AddTaskIsoPhoton.C:503
 AddTaskIsoPhoton.C:504
 AddTaskIsoPhoton.C:505
 AddTaskIsoPhoton.C:506
 AddTaskIsoPhoton.C:507
 AddTaskIsoPhoton.C:508
 AddTaskIsoPhoton.C:509
 AddTaskIsoPhoton.C:510
 AddTaskIsoPhoton.C:511
 AddTaskIsoPhoton.C:512
 AddTaskIsoPhoton.C:513
 AddTaskIsoPhoton.C:514
 AddTaskIsoPhoton.C:515
 AddTaskIsoPhoton.C:516
 AddTaskIsoPhoton.C:517
 AddTaskIsoPhoton.C:518
 AddTaskIsoPhoton.C:519
 AddTaskIsoPhoton.C:520
 AddTaskIsoPhoton.C:521
 AddTaskIsoPhoton.C:522
 AddTaskIsoPhoton.C:523
 AddTaskIsoPhoton.C:524
 AddTaskIsoPhoton.C:525
 AddTaskIsoPhoton.C:526
 AddTaskIsoPhoton.C:527
 AddTaskIsoPhoton.C:528
 AddTaskIsoPhoton.C:529
 AddTaskIsoPhoton.C:530
 AddTaskIsoPhoton.C:531
 AddTaskIsoPhoton.C:532
 AddTaskIsoPhoton.C:533
 AddTaskIsoPhoton.C:534
 AddTaskIsoPhoton.C:535
 AddTaskIsoPhoton.C:536
 AddTaskIsoPhoton.C:537
 AddTaskIsoPhoton.C:538
 AddTaskIsoPhoton.C:539
 AddTaskIsoPhoton.C:540
 AddTaskIsoPhoton.C:541
 AddTaskIsoPhoton.C:542
 AddTaskIsoPhoton.C:543
 AddTaskIsoPhoton.C:544
 AddTaskIsoPhoton.C:545
 AddTaskIsoPhoton.C:546
 AddTaskIsoPhoton.C:547
 AddTaskIsoPhoton.C:548
 AddTaskIsoPhoton.C:549
 AddTaskIsoPhoton.C:550
 AddTaskIsoPhoton.C:551
 AddTaskIsoPhoton.C:552
 AddTaskIsoPhoton.C:553
 AddTaskIsoPhoton.C:554
 AddTaskIsoPhoton.C:555
 AddTaskIsoPhoton.C:556
 AddTaskIsoPhoton.C:557
 AddTaskIsoPhoton.C:558
 AddTaskIsoPhoton.C:559
 AddTaskIsoPhoton.C:560
 AddTaskIsoPhoton.C:561
 AddTaskIsoPhoton.C:562
 AddTaskIsoPhoton.C:563
 AddTaskIsoPhoton.C:564
 AddTaskIsoPhoton.C:565
 AddTaskIsoPhoton.C:566
 AddTaskIsoPhoton.C:567
 AddTaskIsoPhoton.C:568
 AddTaskIsoPhoton.C:569
 AddTaskIsoPhoton.C:570
 AddTaskIsoPhoton.C:571
 AddTaskIsoPhoton.C:572
 AddTaskIsoPhoton.C:573
 AddTaskIsoPhoton.C:574
 AddTaskIsoPhoton.C:575
 AddTaskIsoPhoton.C:576
 AddTaskIsoPhoton.C:577
 AddTaskIsoPhoton.C:578
 AddTaskIsoPhoton.C:579
 AddTaskIsoPhoton.C:580
 AddTaskIsoPhoton.C:581
 AddTaskIsoPhoton.C:582
 AddTaskIsoPhoton.C:583
 AddTaskIsoPhoton.C:584
 AddTaskIsoPhoton.C:585
 AddTaskIsoPhoton.C:586
 AddTaskIsoPhoton.C:587
 AddTaskIsoPhoton.C:588
 AddTaskIsoPhoton.C:589
 AddTaskIsoPhoton.C:590
 AddTaskIsoPhoton.C:591
 AddTaskIsoPhoton.C:592
 AddTaskIsoPhoton.C:593
 AddTaskIsoPhoton.C:594
 AddTaskIsoPhoton.C:595
 AddTaskIsoPhoton.C:596
 AddTaskIsoPhoton.C:597
 AddTaskIsoPhoton.C:598
 AddTaskIsoPhoton.C:599
 AddTaskIsoPhoton.C:600
 AddTaskIsoPhoton.C:601
 AddTaskIsoPhoton.C:602
 AddTaskIsoPhoton.C:603
 AddTaskIsoPhoton.C:604
 AddTaskIsoPhoton.C:605
 AddTaskIsoPhoton.C:606
 AddTaskIsoPhoton.C:607
 AddTaskIsoPhoton.C:608
 AddTaskIsoPhoton.C:609
 AddTaskIsoPhoton.C:610
 AddTaskIsoPhoton.C:611
 AddTaskIsoPhoton.C:612
 AddTaskIsoPhoton.C:613
 AddTaskIsoPhoton.C:614
 AddTaskIsoPhoton.C:615
 AddTaskIsoPhoton.C:616
 AddTaskIsoPhoton.C:617
 AddTaskIsoPhoton.C:618
 AddTaskIsoPhoton.C:619
 AddTaskIsoPhoton.C:620
 AddTaskIsoPhoton.C:621
 AddTaskIsoPhoton.C:622
 AddTaskIsoPhoton.C:623
 AddTaskIsoPhoton.C:624
 AddTaskIsoPhoton.C:625
 AddTaskIsoPhoton.C:626
 AddTaskIsoPhoton.C:627
 AddTaskIsoPhoton.C:628
 AddTaskIsoPhoton.C:629
 AddTaskIsoPhoton.C:630
 AddTaskIsoPhoton.C:631
 AddTaskIsoPhoton.C:632
 AddTaskIsoPhoton.C:633
 AddTaskIsoPhoton.C:634
 AddTaskIsoPhoton.C:635
 AddTaskIsoPhoton.C:636
 AddTaskIsoPhoton.C:637
 AddTaskIsoPhoton.C:638
 AddTaskIsoPhoton.C:639
 AddTaskIsoPhoton.C:640
 AddTaskIsoPhoton.C:641
 AddTaskIsoPhoton.C:642
 AddTaskIsoPhoton.C:643
 AddTaskIsoPhoton.C:644
 AddTaskIsoPhoton.C:645
 AddTaskIsoPhoton.C:646
 AddTaskIsoPhoton.C:647
 AddTaskIsoPhoton.C:648
 AddTaskIsoPhoton.C:649
 AddTaskIsoPhoton.C:650
 AddTaskIsoPhoton.C:651
 AddTaskIsoPhoton.C:652
 AddTaskIsoPhoton.C:653
 AddTaskIsoPhoton.C:654
 AddTaskIsoPhoton.C:655
 AddTaskIsoPhoton.C:656
 AddTaskIsoPhoton.C:657
 AddTaskIsoPhoton.C:658
 AddTaskIsoPhoton.C:659
 AddTaskIsoPhoton.C:660
 AddTaskIsoPhoton.C:661
 AddTaskIsoPhoton.C:662
 AddTaskIsoPhoton.C:663
 AddTaskIsoPhoton.C:664
 AddTaskIsoPhoton.C:665
 AddTaskIsoPhoton.C:666
 AddTaskIsoPhoton.C:667
 AddTaskIsoPhoton.C:668
 AddTaskIsoPhoton.C:669
 AddTaskIsoPhoton.C:670
 AddTaskIsoPhoton.C:671
 AddTaskIsoPhoton.C:672
 AddTaskIsoPhoton.C:673
 AddTaskIsoPhoton.C:674
 AddTaskIsoPhoton.C:675
 AddTaskIsoPhoton.C:676
 AddTaskIsoPhoton.C:677
 AddTaskIsoPhoton.C:678
 AddTaskIsoPhoton.C:679
 AddTaskIsoPhoton.C:680
 AddTaskIsoPhoton.C:681
 AddTaskIsoPhoton.C:682
 AddTaskIsoPhoton.C:683
 AddTaskIsoPhoton.C:684
 AddTaskIsoPhoton.C:685
 AddTaskIsoPhoton.C:686
 AddTaskIsoPhoton.C:687
 AddTaskIsoPhoton.C:688
 AddTaskIsoPhoton.C:689
 AddTaskIsoPhoton.C:690
 AddTaskIsoPhoton.C:691
 AddTaskIsoPhoton.C:692
 AddTaskIsoPhoton.C:693
 AddTaskIsoPhoton.C:694
 AddTaskIsoPhoton.C:695
 AddTaskIsoPhoton.C:696
 AddTaskIsoPhoton.C:697
 AddTaskIsoPhoton.C:698
 AddTaskIsoPhoton.C:699
 AddTaskIsoPhoton.C:700
 AddTaskIsoPhoton.C:701
 AddTaskIsoPhoton.C:702
 AddTaskIsoPhoton.C:703
 AddTaskIsoPhoton.C:704
 AddTaskIsoPhoton.C:705
 AddTaskIsoPhoton.C:706
 AddTaskIsoPhoton.C:707
 AddTaskIsoPhoton.C:708
 AddTaskIsoPhoton.C:709
 AddTaskIsoPhoton.C:710
 AddTaskIsoPhoton.C:711
 AddTaskIsoPhoton.C:712
 AddTaskIsoPhoton.C:713
 AddTaskIsoPhoton.C:714
 AddTaskIsoPhoton.C:715
 AddTaskIsoPhoton.C:716
 AddTaskIsoPhoton.C:717
 AddTaskIsoPhoton.C:718
 AddTaskIsoPhoton.C:719
 AddTaskIsoPhoton.C:720
 AddTaskIsoPhoton.C:721
 AddTaskIsoPhoton.C:722
 AddTaskIsoPhoton.C:723
 AddTaskIsoPhoton.C:724
 AddTaskIsoPhoton.C:725
 AddTaskIsoPhoton.C:726
 AddTaskIsoPhoton.C:727
 AddTaskIsoPhoton.C:728
 AddTaskIsoPhoton.C:729
 AddTaskIsoPhoton.C:730
 AddTaskIsoPhoton.C:731
 AddTaskIsoPhoton.C:732
 AddTaskIsoPhoton.C:733
 AddTaskIsoPhoton.C:734
 AddTaskIsoPhoton.C:735
 AddTaskIsoPhoton.C:736
 AddTaskIsoPhoton.C:737
 AddTaskIsoPhoton.C:738
 AddTaskIsoPhoton.C:739
 AddTaskIsoPhoton.C:740
 AddTaskIsoPhoton.C:741
 AddTaskIsoPhoton.C:742
 AddTaskIsoPhoton.C:743
 AddTaskIsoPhoton.C:744
 AddTaskIsoPhoton.C:745
 AddTaskIsoPhoton.C:746
 AddTaskIsoPhoton.C:747
 AddTaskIsoPhoton.C:748
 AddTaskIsoPhoton.C:749
 AddTaskIsoPhoton.C:750
 AddTaskIsoPhoton.C:751
 AddTaskIsoPhoton.C:752
 AddTaskIsoPhoton.C:753
 AddTaskIsoPhoton.C:754
 AddTaskIsoPhoton.C:755
 AddTaskIsoPhoton.C:756
 AddTaskIsoPhoton.C:757
 AddTaskIsoPhoton.C:758
 AddTaskIsoPhoton.C:759
 AddTaskIsoPhoton.C:760
 AddTaskIsoPhoton.C:761
 AddTaskIsoPhoton.C:762
 AddTaskIsoPhoton.C:763
 AddTaskIsoPhoton.C:764
 AddTaskIsoPhoton.C:765
 AddTaskIsoPhoton.C:766
 AddTaskIsoPhoton.C:767
 AddTaskIsoPhoton.C:768
 AddTaskIsoPhoton.C:769
 AddTaskIsoPhoton.C:770
 AddTaskIsoPhoton.C:771
 AddTaskIsoPhoton.C:772
 AddTaskIsoPhoton.C:773
 AddTaskIsoPhoton.C:774
 AddTaskIsoPhoton.C:775
 AddTaskIsoPhoton.C:776
 AddTaskIsoPhoton.C:777
 AddTaskIsoPhoton.C:778
 AddTaskIsoPhoton.C:779
 AddTaskIsoPhoton.C:780
 AddTaskIsoPhoton.C:781
 AddTaskIsoPhoton.C:782
 AddTaskIsoPhoton.C:783
 AddTaskIsoPhoton.C:784
 AddTaskIsoPhoton.C:785
 AddTaskIsoPhoton.C:786
 AddTaskIsoPhoton.C:787
 AddTaskIsoPhoton.C:788
 AddTaskIsoPhoton.C:789
 AddTaskIsoPhoton.C:790
 AddTaskIsoPhoton.C:791
 AddTaskIsoPhoton.C:792
 AddTaskIsoPhoton.C:793
 AddTaskIsoPhoton.C:794
 AddTaskIsoPhoton.C:795
 AddTaskIsoPhoton.C:796
 AddTaskIsoPhoton.C:797
 AddTaskIsoPhoton.C:798
 AddTaskIsoPhoton.C:799
 AddTaskIsoPhoton.C:800
 AddTaskIsoPhoton.C:801
 AddTaskIsoPhoton.C:802
 AddTaskIsoPhoton.C:803
 AddTaskIsoPhoton.C:804
 AddTaskIsoPhoton.C:805
 AddTaskIsoPhoton.C:806
 AddTaskIsoPhoton.C:807
 AddTaskIsoPhoton.C:808
 AddTaskIsoPhoton.C:809
 AddTaskIsoPhoton.C:810
 AddTaskIsoPhoton.C:811
 AddTaskIsoPhoton.C:812
 AddTaskIsoPhoton.C:813
 AddTaskIsoPhoton.C:814
 AddTaskIsoPhoton.C:815
 AddTaskIsoPhoton.C:816
 AddTaskIsoPhoton.C:817
 AddTaskIsoPhoton.C:818
 AddTaskIsoPhoton.C:819
 AddTaskIsoPhoton.C:820
 AddTaskIsoPhoton.C:821
 AddTaskIsoPhoton.C:822
 AddTaskIsoPhoton.C:823
 AddTaskIsoPhoton.C:824
 AddTaskIsoPhoton.C:825
 AddTaskIsoPhoton.C:826
 AddTaskIsoPhoton.C:827
 AddTaskIsoPhoton.C:828
 AddTaskIsoPhoton.C:829
 AddTaskIsoPhoton.C:830
 AddTaskIsoPhoton.C:831
 AddTaskIsoPhoton.C:832
 AddTaskIsoPhoton.C:833
 AddTaskIsoPhoton.C:834
 AddTaskIsoPhoton.C:835
 AddTaskIsoPhoton.C:836
 AddTaskIsoPhoton.C:837
 AddTaskIsoPhoton.C:838
 AddTaskIsoPhoton.C:839
 AddTaskIsoPhoton.C:840
 AddTaskIsoPhoton.C:841
 AddTaskIsoPhoton.C:842
 AddTaskIsoPhoton.C:843
 AddTaskIsoPhoton.C:844
 AddTaskIsoPhoton.C:845
 AddTaskIsoPhoton.C:846
 AddTaskIsoPhoton.C:847
 AddTaskIsoPhoton.C:848
 AddTaskIsoPhoton.C:849
 AddTaskIsoPhoton.C:850
 AddTaskIsoPhoton.C:851
 AddTaskIsoPhoton.C:852
 AddTaskIsoPhoton.C:853
 AddTaskIsoPhoton.C:854
 AddTaskIsoPhoton.C:855
 AddTaskIsoPhoton.C:856
 AddTaskIsoPhoton.C:857
 AddTaskIsoPhoton.C:858
 AddTaskIsoPhoton.C:859
 AddTaskIsoPhoton.C:860
 AddTaskIsoPhoton.C:861
 AddTaskIsoPhoton.C:862
 AddTaskIsoPhoton.C:863
 AddTaskIsoPhoton.C:864
 AddTaskIsoPhoton.C:865
 AddTaskIsoPhoton.C:866
 AddTaskIsoPhoton.C:867
 AddTaskIsoPhoton.C:868
 AddTaskIsoPhoton.C:869
 AddTaskIsoPhoton.C:870
 AddTaskIsoPhoton.C:871
 AddTaskIsoPhoton.C:872
 AddTaskIsoPhoton.C:873
 AddTaskIsoPhoton.C:874
 AddTaskIsoPhoton.C:875
 AddTaskIsoPhoton.C:876
 AddTaskIsoPhoton.C:877
 AddTaskIsoPhoton.C:878
 AddTaskIsoPhoton.C:879
 AddTaskIsoPhoton.C:880
 AddTaskIsoPhoton.C:881
 AddTaskIsoPhoton.C:882
 AddTaskIsoPhoton.C:883
 AddTaskIsoPhoton.C:884
 AddTaskIsoPhoton.C:885
 AddTaskIsoPhoton.C:886
 AddTaskIsoPhoton.C:887
 AddTaskIsoPhoton.C:888
 AddTaskIsoPhoton.C:889
 AddTaskIsoPhoton.C:890