ROOT logo
// $Id$

Bool_t AddTrackCutsLHC10h(AliAnalysisTaskESDfilter* esdFilter);
Bool_t AddTrackCutsLHC11h(AliAnalysisTaskESDfilter* esdFilter);
Bool_t enableTPCOnlyAODTracksLocalFlag=kFALSE;

AliAnalysisTaskESDfilter *AddTaskESDFilterEMCALEventSelect(Float_t energyCut = 10,     // EMCAL
                                                           Int_t   ncellsCut = 2,      // EMCAL
                                                           Int_t   runNumber = 170000, // EMCAL
                                                           Bool_t  useKineFilter=kTRUE, 
                                                           Int_t   tofTimeZeroType=AliESDpid::kTOF_T0,
                                                           Bool_t  enableTPCOnlyAODTracks=kFALSE,
                                                           Bool_t  disableCascades=kFALSE,
                                                           Bool_t  disableKinks=kFALSE, 
                                                           Int_t   runFlag = 1100)
{
  // Creates a filter task and adds it to the analysis manager.
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskESDFilter", "No analysis manager to connect to.");
    return NULL;
  }   
  
  // This task requires an ESD input handler and an AOD output handler.
  // Check this using the analysis manager.
  //===============================================================================
  TString type = mgr->GetInputEventHandler()->GetDataType();
  if (!type.Contains("ESD")) {
    ::Error("AddTaskESDFilter", "ESD filtering task needs the manager to have an ESD input handler.");
    return NULL;
  }   
  // Check if AOD output handler exist.
  AliAODHandler *aod_h = (AliAODHandler*)mgr->GetOutputEventHandler();
  if (!aod_h) {
    ::Error("AddTaskESDFilter", "ESD filtering task needs the manager to have an AOD output handler.");
    return NULL;
  }
  // Check if MC handler is connected in case kine filter requested
  AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
  if (!mcH && useKineFilter) {
    ::Error("AddTaskESDFilter", "No MC handler connected while kine filtering requested");
    return NULL;
  }   
  
  // Create the task, add it to the manager and configure it.
  //===========================================================================   
  AliAnalysisTaskESDfilterEMCALEventSelect *esdfilter = new AliAnalysisTaskESDfilterEMCALEventSelect("ESD Filter : EMCAL event select");
  
  esdfilter->DisableZDC();
  esdfilter->DisablePmdClusters();
  
  // EMCAL settings
  esdfilter->SetEnergyCut(energyCut);
  esdfilter->SetNcellsCut(ncellsCut);
  
  AliEMCALRecoUtils * reco = esdfilter->GetRecoUtils();
  reco->SwitchOnRejectExoticCluster();
  
  // Pass the bad channels, need to access run number
  TString fileName="$ALICE_ROOT/OADB/EMCAL/EMCALBadChannels.root";
  AliOADBContainer *contBC=new AliOADBContainer("");
  contBC->InitFromFile((char*)fileName.Data(),"AliEMCALBadChannels"); 
  TObjArray *arrayBC=(TObjArray*)contBC->GetObject(runNumber); 
  if(arrayBC){
    TObjArray *arrayBCpass=(TObjArray*)arrayBC->FindObject("pass1");
    if(arrayBCpass){
      
      reco->SwitchOnBadChannelsRemoval();
      printf("*** EMCAL RecoUtils : REMOVE bad cells \n");
      
      for (Int_t i=0; i<10; ++i) {
        TH2I *hbm = reco->GetEMCALChannelStatusMap(i);
        if (hbm)
          delete hbm;
        hbm=(TH2I*)arrayBCpass->FindObject(Form("EMCALBadChannelMap_Mod%d",i));
        
        if (!hbm) {
          AliError(Form("Can not get EMCALBadChannelMap_Mod%d",i));
          continue;
        }
        
        hbm->SetDirectory(0);
        reco->SetEMCALChannelStatusMap(i,hbm);
      }
    } else printf("AliEMCALRecoUtils ---Do NOT remove bad channels 1\n");
  }  else  printf("AliEMCALRecoUtils ---Do NOT remove bad channels 2\n");
    
  // From here keep sync with $ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C
  
  esdfilter->SetTimeZeroType(tofTimeZeroType);
  if  (disableCascades) esdfilter->DisableCascades();
  if  (disableKinks)    esdfilter->DisableKinks();
  
  mgr->AddTask(esdfilter);
  
  // Filtering of MC particles (decays conversions etc)
  // this task has to go AFTER all other filter tasks
  // since it fills the AODMC array with all
  // selected MC Particles, only this way we have the 
  // AODMCparticle information available for following tasks
  AliAnalysisTaskMCParticleFilter *kinefilter = 0;
  if (useKineFilter) {
    kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Kine Filter");
    mgr->AddTask(kinefilter);
  }   
  
  enableTPCOnlyAODTracksLocalFlag = enableTPCOnlyAODTracks;
  if((runFlag/100)==10){
    AddTrackCutsLHC10h(esdfilter);
  }
  else {
    // default 11h
    AddTrackCutsLHC11h(esdfilter);
  }
  
  // Filter with cuts on V0s
  AliESDv0Cuts*   esdV0Cuts = new AliESDv0Cuts("Standard V0 Cuts pp", "ESD V0 Cuts");
  esdV0Cuts->SetMinRadius(0.2);
  esdV0Cuts->SetMaxRadius(200);
  esdV0Cuts->SetMinDcaPosToVertex(0.05);
  esdV0Cuts->SetMinDcaNegToVertex(0.05);
  esdV0Cuts->SetMaxDcaV0Daughters(1.5);
  esdV0Cuts->SetMinCosinePointingAngle(0.99);
  AliAnalysisFilter* v0Filter = new AliAnalysisFilter("v0Filter");
  v0Filter->AddCuts(esdV0Cuts);
  
  esdfilter->SetV0Filter(v0Filter);
  
  // 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  (esdfilter,  0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput (esdfilter,  0, mgr->GetCommonOutputContainer());
  if (useKineFilter) {
    mgr->ConnectInput  (kinefilter,  0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput (kinefilter,  0, mgr->GetCommonOutputContainer());
    AliAnalysisDataContainer *coutputEx = mgr->CreateContainer("cFilterList", TList::Class(),
                                                               AliAnalysisManager::kOutputContainer,"pyxsec_hists.root");
    mgr->ConnectOutput (kinefilter,  1,coutputEx);
  }   
  return esdfilter;
}

Bool_t AddTrackCutsLHC10h(AliAnalysisTaskESDfilter* esdfilter)
{
  Printf("%s%d: Creating Track Cuts for LH10h",(char*)__FILE__,__LINE__);
  
  // Cuts on primary tracks
  AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
  
  // ITS stand-alone tracks
  AliESDtrackCuts* esdTrackCutsITSsa = new AliESDtrackCuts("ITS stand-alone Track Cuts", "ESD Track Cuts");
  esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
  
  // Pixel OR necessary for the electrons
  AliESDtrackCuts *itsStrong = new AliESDtrackCuts("ITSorSPD", "pixel requirement for ITS");
  itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
  
  
  // PID for the electrons
  AliESDpidCuts *electronID = new AliESDpidCuts("Electrons", "Electron PID cuts");
  electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
  
  // tighter cuts on primary particles for high pT tracks
  // take the standard cuts, which include already 
  // ITSrefit and use only primaries...
  
  // ITS cuts for new jet analysis 
  //  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
  //  AliESDtrackCuts* esdTrackCutsHG0 = CreateTrackCutsPWGJE(10001006);
  
  AliESDtrackCuts *jetCuts1006 = new AliESDtrackCuts("AliESDtrackCuts"); 
  
  TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
  jetCuts1006->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.);
  jetCuts1006->SetMinNClustersTPC(70);
  jetCuts1006->SetMaxChi2PerClusterTPC(4);
  jetCuts1006->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
  jetCuts1006->SetAcceptKinkDaughters(kFALSE);
  jetCuts1006->SetRequireTPCRefit(kTRUE);
  jetCuts1006->SetMaxFractionSharedTPCClusters(0.4);
  // ITS
  jetCuts1006->SetRequireITSRefit(kTRUE);
  //accept secondaries
  jetCuts1006->SetMaxDCAToVertexXY(2.4);
  jetCuts1006->SetMaxDCAToVertexZ(3.2);
  jetCuts1006->SetDCAToVertex2D(kTRUE);
  //reject fakes
  jetCuts1006->SetMaxChi2PerClusterITS(36);
  jetCuts1006->SetMaxChi2TPCConstrainedGlobal(36);
  
  jetCuts1006->SetRequireSigmaToVertex(kFALSE);
  
  jetCuts1006->SetEtaRange(-0.9,0.9);
  jetCuts1006->SetPtRange(0.15, 1E+15.);
  
  AliESDtrackCuts* esdTrackCutsHG0 = jetCuts1006->Clone("JetCuts10001006");
  esdTrackCutsHG0->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
  
  // throw out tracks with too low number of clusters in
  // the first pass (be consistent with TPC only tracks)
  // N.B. the number off crossed rows still acts on the tracks after
  // all iterations if we require tpc standalone, number of clusters
  // and chi2 TPC cuts act on track after the first iteration
  //   esdTrackCutsH0->SetRequireTPCStandAlone(kTRUE);
  //   esdTrackCutsH0->SetMinNClustersTPC(80); // <--- first pass
  
  // the complement to the one with SPD requirement
  //  AliESDtrackCuts* esdTrackCutsHG1 = CreateTrackCutsPWGJE(10011006);
  AliESDtrackCuts* esdTrackCutsHG1 = jetCuts1006->Clone("JetCuts10011006");
  esdTrackCutsHG1->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
  
  // the tracks that must not be taken pass this cut and
  // non HGC1 and HG
  //  AliESDtrackCuts* esdTrackCutsHG2 = CreateTrackCutsPWGJE(10021006);
  AliESDtrackCuts* esdTrackCutsHG2 = jetCuts1006->Clone("JetCuts10021006");
  esdTrackCutsHG2->SetMaxChi2PerClusterITS(1E10);
  
  // standard cuts also used in R_AA analysis
  //   "Global track RAA analysis QM2011 + Chi2ITS<36";
  //  AliESDtrackCuts* esdTrackCutsH2 = CreateTrackCutsPWGJE(1000);
  AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
  esdTrackCutsH2->SetMinNCrossedRowsTPC(120);
  esdTrackCutsH2->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
  esdTrackCutsH2->SetMaxChi2PerClusterITS(36);
  esdTrackCutsH2->SetMaxFractionSharedTPCClusters(0.4);
  esdTrackCutsH2->SetMaxChi2TPCConstrainedGlobal(36);
  
  esdTrackCutsH2->SetEtaRange(-0.9,0.9);
  esdTrackCutsH2->SetPtRange(0.15, 1e10);
  
  //  AliESDtrackCuts* esdTrackCutsGCOnly = CreateTrackCutsPWGJE(10041006);
  AliESDtrackCuts* esdTrackCutsGCOnly = jetCuts1006->Clone("JetCuts10041006");
  esdTrackCutsGCOnly->SetRequireITSRefit(kFALSE);
  
  // TPC only tracks
  AliESDtrackCuts* esdTrackCutsTPCCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
  esdTrackCutsTPCCOnly->SetMinNClustersTPC(70);
  
  // Compose the filter
  AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
  // 1, 1<<0
  trackFilter->AddCuts(esdTrackCutsL);
  // 2 1<<1
  trackFilter->AddCuts(esdTrackCutsITSsa);
  // 4 1<<2
  trackFilter->AddCuts(itsStrong);
  itsStrong->SetFilterMask(1);        // AND with Standard track cuts 
  // 8 1<<3
  trackFilter->AddCuts(electronID);
  electronID->SetFilterMask(4);       // AND with Pixel Cuts
  // 16 1<<4
  trackFilter->AddCuts(esdTrackCutsHG0);
  // 32 1<<5
  trackFilter->AddCuts(esdTrackCutsHG1);
  // 64 1<<6
  trackFilter->AddCuts(esdTrackCutsHG2);
  // 128 1<<7
  trackFilter->AddCuts(esdTrackCutsTPCCOnly); // add QM TPC only track cuts
  if(enableTPCOnlyAODTracksLocalFlag)esdfilter->SetTPCOnlyFilterMask(128);
  // 256 1<<8
  trackFilter->AddCuts(esdTrackCutsGCOnly);
  // 512 1<<9                         
  AliESDtrackCuts* esdTrackCutsHG1_tmp = new AliESDtrackCuts(*esdTrackCutsHG1); // avoid double delete
  trackFilter->AddCuts(esdTrackCutsHG1_tmp); // add once more for tpc only tracks
  // 1024 1<<10                        
  trackFilter->AddCuts(esdTrackCutsH2); // add r_aa cuts
  
  
  
  esdfilter->SetGlobalConstrainedFilterMask(1<<8|1<<9); // these tracks are written out as global constrained tracks
  esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<4)); // these normal global tracks will be marked as hybrid
  esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE); // write only the complement
  //     esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as tpc constrained tracks
  
  esdfilter->SetTrackFilter(trackFilter);
  return kTRUE;
}

Bool_t AddTrackCutsLHC11h(AliAnalysisTaskESDfilter* esdfilter)
{
  Printf("%s%d: Creating Track Cuts LHC11h",(char*)__FILE__,__LINE__);
  
  // Cuts on primary tracks
  AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
  
  // ITS stand-alone tracks
  AliESDtrackCuts* esdTrackCutsITSsa = new AliESDtrackCuts("ITS stand-alone Track Cuts", "ESD Track Cuts");
  esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
  
  // Pixel OR necessary for the electrons
  AliESDtrackCuts *itsStrong = new AliESDtrackCuts("ITSorSPD", "pixel requirement for ITS");
  itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
  
  
  // PID for the electrons
  AliESDpidCuts *electronID = new AliESDpidCuts("Electrons", "Electron PID cuts");
  electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
  
  // standard cuts with very loose DCA
  AliESDtrackCuts* esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE); 
  esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
  esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
  esdTrackCutsH->SetDCAToVertex2D(kTRUE);
  
  // standard cuts with tight DCA cut
  AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
  
  // standard cuts with tight DCA but with requiring the first SDD cluster instead of an SPD cluster
  // tracks selected by this cut are exclusive to those selected by the previous cut
  AliESDtrackCuts* esdTrackCutsH3 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(); 
  esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
  esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
  
  // TPC only tracks: Optionally enable the writing of TPConly information
  // constrained to SPD vertex in the filter below
  AliESDtrackCuts* esdTrackCutsTPCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
  // The following line is needed for 2010 PbPb reprocessing and pp, but not for 2011 PbPb
  //esdTrackCutsTPCOnly->SetMinNClustersTPC(70);
  
  // Extra cuts for hybrids
  // first the global tracks we want to take
  AliESDtrackCuts* esdTrackCutsHTG = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE); 
  esdTrackCutsHTG->SetName("Global Hybrid tracks, loose DCA");
  esdTrackCutsHTG->SetMaxDCAToVertexXY(2.4);
  esdTrackCutsHTG->SetMaxDCAToVertexZ(3.2);
  esdTrackCutsHTG->SetDCAToVertex2D(kTRUE);
  esdTrackCutsHTG->SetMaxChi2TPCConstrainedGlobal(36);
  
  // Than the complementary tracks which will be stored as global
  // constraint, complement is done in the ESDFilter task
  AliESDtrackCuts* esdTrackCutsHTGC = new AliESDtrackCuts(*esdTrackCutsHTG);
  esdTrackCutsHTGC->SetName("Global Constraint Hybrid tracks, loose DCA no it requirement");
  esdTrackCutsHTGC->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff);
  esdTrackCutsHTGC->SetRequireITSRefit(kFALSE);
  
  // standard cuts with tight DCA cut, using cluster cut instead of crossed rows (a la 2010 default)
  AliESDtrackCuts* esdTrackCutsH2Cluster = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE, 0);
  
  // Compose the filter
  AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
  // 1, 1<<0
  trackFilter->AddCuts(esdTrackCutsL);
  // 2, 1<<1
  trackFilter->AddCuts(esdTrackCutsITSsa);
  // 4, 1<<2
  trackFilter->AddCuts(itsStrong);
  itsStrong->SetFilterMask(1);        // AND with Standard track cuts 
  // 8, 1<<3
  trackFilter->AddCuts(electronID);
  electronID->SetFilterMask(4);       // AND with Pixel Cuts
  // 16, 1<<4
  trackFilter->AddCuts(esdTrackCutsH);
  // 32, 1<<5
  trackFilter->AddCuts(esdTrackCutsH2);
  // 64, 1<<6
  trackFilter->AddCuts(esdTrackCutsH3);
  // 128 , 1 << 7
  trackFilter->AddCuts(esdTrackCutsTPCOnly);
  if(enableTPCOnlyAODTracksLocalFlag)esdfilter->SetTPCOnlyFilterMask(128);
  // 256, 1 << 8 Global Hybrids
  trackFilter->AddCuts(esdTrackCutsHTG);
  esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<8)); // these normal global tracks will be marked as hybrid    
  // 512, 1<< 9 GlobalConstraint Hybrids
  trackFilter->AddCuts(esdTrackCutsHTGC);
  esdfilter->SetGlobalConstrainedFilterMask(1<<9); // these tracks are written out as global constrained tracks 
  esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE); // write only the complement
  // 1024, 1<< 10
  trackFilter->AddCuts(esdTrackCutsH2Cluster);
  esdfilter->SetTrackFilter(trackFilter);
  
  return kTRUE;
}
 AddTaskESDFilterEMCALEventSelect.C:1
 AddTaskESDFilterEMCALEventSelect.C:2
 AddTaskESDFilterEMCALEventSelect.C:3
 AddTaskESDFilterEMCALEventSelect.C:4
 AddTaskESDFilterEMCALEventSelect.C:5
 AddTaskESDFilterEMCALEventSelect.C:6
 AddTaskESDFilterEMCALEventSelect.C:7
 AddTaskESDFilterEMCALEventSelect.C:8
 AddTaskESDFilterEMCALEventSelect.C:9
 AddTaskESDFilterEMCALEventSelect.C:10
 AddTaskESDFilterEMCALEventSelect.C:11
 AddTaskESDFilterEMCALEventSelect.C:12
 AddTaskESDFilterEMCALEventSelect.C:13
 AddTaskESDFilterEMCALEventSelect.C:14
 AddTaskESDFilterEMCALEventSelect.C:15
 AddTaskESDFilterEMCALEventSelect.C:16
 AddTaskESDFilterEMCALEventSelect.C:17
 AddTaskESDFilterEMCALEventSelect.C:18
 AddTaskESDFilterEMCALEventSelect.C:19
 AddTaskESDFilterEMCALEventSelect.C:20
 AddTaskESDFilterEMCALEventSelect.C:21
 AddTaskESDFilterEMCALEventSelect.C:22
 AddTaskESDFilterEMCALEventSelect.C:23
 AddTaskESDFilterEMCALEventSelect.C:24
 AddTaskESDFilterEMCALEventSelect.C:25
 AddTaskESDFilterEMCALEventSelect.C:26
 AddTaskESDFilterEMCALEventSelect.C:27
 AddTaskESDFilterEMCALEventSelect.C:28
 AddTaskESDFilterEMCALEventSelect.C:29
 AddTaskESDFilterEMCALEventSelect.C:30
 AddTaskESDFilterEMCALEventSelect.C:31
 AddTaskESDFilterEMCALEventSelect.C:32
 AddTaskESDFilterEMCALEventSelect.C:33
 AddTaskESDFilterEMCALEventSelect.C:34
 AddTaskESDFilterEMCALEventSelect.C:35
 AddTaskESDFilterEMCALEventSelect.C:36
 AddTaskESDFilterEMCALEventSelect.C:37
 AddTaskESDFilterEMCALEventSelect.C:38
 AddTaskESDFilterEMCALEventSelect.C:39
 AddTaskESDFilterEMCALEventSelect.C:40
 AddTaskESDFilterEMCALEventSelect.C:41
 AddTaskESDFilterEMCALEventSelect.C:42
 AddTaskESDFilterEMCALEventSelect.C:43
 AddTaskESDFilterEMCALEventSelect.C:44
 AddTaskESDFilterEMCALEventSelect.C:45
 AddTaskESDFilterEMCALEventSelect.C:46
 AddTaskESDFilterEMCALEventSelect.C:47
 AddTaskESDFilterEMCALEventSelect.C:48
 AddTaskESDFilterEMCALEventSelect.C:49
 AddTaskESDFilterEMCALEventSelect.C:50
 AddTaskESDFilterEMCALEventSelect.C:51
 AddTaskESDFilterEMCALEventSelect.C:52
 AddTaskESDFilterEMCALEventSelect.C:53
 AddTaskESDFilterEMCALEventSelect.C:54
 AddTaskESDFilterEMCALEventSelect.C:55
 AddTaskESDFilterEMCALEventSelect.C:56
 AddTaskESDFilterEMCALEventSelect.C:57
 AddTaskESDFilterEMCALEventSelect.C:58
 AddTaskESDFilterEMCALEventSelect.C:59
 AddTaskESDFilterEMCALEventSelect.C:60
 AddTaskESDFilterEMCALEventSelect.C:61
 AddTaskESDFilterEMCALEventSelect.C:62
 AddTaskESDFilterEMCALEventSelect.C:63
 AddTaskESDFilterEMCALEventSelect.C:64
 AddTaskESDFilterEMCALEventSelect.C:65
 AddTaskESDFilterEMCALEventSelect.C:66
 AddTaskESDFilterEMCALEventSelect.C:67
 AddTaskESDFilterEMCALEventSelect.C:68
 AddTaskESDFilterEMCALEventSelect.C:69
 AddTaskESDFilterEMCALEventSelect.C:70
 AddTaskESDFilterEMCALEventSelect.C:71
 AddTaskESDFilterEMCALEventSelect.C:72
 AddTaskESDFilterEMCALEventSelect.C:73
 AddTaskESDFilterEMCALEventSelect.C:74
 AddTaskESDFilterEMCALEventSelect.C:75
 AddTaskESDFilterEMCALEventSelect.C:76
 AddTaskESDFilterEMCALEventSelect.C:77
 AddTaskESDFilterEMCALEventSelect.C:78
 AddTaskESDFilterEMCALEventSelect.C:79
 AddTaskESDFilterEMCALEventSelect.C:80
 AddTaskESDFilterEMCALEventSelect.C:81
 AddTaskESDFilterEMCALEventSelect.C:82
 AddTaskESDFilterEMCALEventSelect.C:83
 AddTaskESDFilterEMCALEventSelect.C:84
 AddTaskESDFilterEMCALEventSelect.C:85
 AddTaskESDFilterEMCALEventSelect.C:86
 AddTaskESDFilterEMCALEventSelect.C:87
 AddTaskESDFilterEMCALEventSelect.C:88
 AddTaskESDFilterEMCALEventSelect.C:89
 AddTaskESDFilterEMCALEventSelect.C:90
 AddTaskESDFilterEMCALEventSelect.C:91
 AddTaskESDFilterEMCALEventSelect.C:92
 AddTaskESDFilterEMCALEventSelect.C:93
 AddTaskESDFilterEMCALEventSelect.C:94
 AddTaskESDFilterEMCALEventSelect.C:95
 AddTaskESDFilterEMCALEventSelect.C:96
 AddTaskESDFilterEMCALEventSelect.C:97
 AddTaskESDFilterEMCALEventSelect.C:98
 AddTaskESDFilterEMCALEventSelect.C:99
 AddTaskESDFilterEMCALEventSelect.C:100
 AddTaskESDFilterEMCALEventSelect.C:101
 AddTaskESDFilterEMCALEventSelect.C:102
 AddTaskESDFilterEMCALEventSelect.C:103
 AddTaskESDFilterEMCALEventSelect.C:104
 AddTaskESDFilterEMCALEventSelect.C:105
 AddTaskESDFilterEMCALEventSelect.C:106
 AddTaskESDFilterEMCALEventSelect.C:107
 AddTaskESDFilterEMCALEventSelect.C:108
 AddTaskESDFilterEMCALEventSelect.C:109
 AddTaskESDFilterEMCALEventSelect.C:110
 AddTaskESDFilterEMCALEventSelect.C:111
 AddTaskESDFilterEMCALEventSelect.C:112
 AddTaskESDFilterEMCALEventSelect.C:113
 AddTaskESDFilterEMCALEventSelect.C:114
 AddTaskESDFilterEMCALEventSelect.C:115
 AddTaskESDFilterEMCALEventSelect.C:116
 AddTaskESDFilterEMCALEventSelect.C:117
 AddTaskESDFilterEMCALEventSelect.C:118
 AddTaskESDFilterEMCALEventSelect.C:119
 AddTaskESDFilterEMCALEventSelect.C:120
 AddTaskESDFilterEMCALEventSelect.C:121
 AddTaskESDFilterEMCALEventSelect.C:122
 AddTaskESDFilterEMCALEventSelect.C:123
 AddTaskESDFilterEMCALEventSelect.C:124
 AddTaskESDFilterEMCALEventSelect.C:125
 AddTaskESDFilterEMCALEventSelect.C:126
 AddTaskESDFilterEMCALEventSelect.C:127
 AddTaskESDFilterEMCALEventSelect.C:128
 AddTaskESDFilterEMCALEventSelect.C:129
 AddTaskESDFilterEMCALEventSelect.C:130
 AddTaskESDFilterEMCALEventSelect.C:131
 AddTaskESDFilterEMCALEventSelect.C:132
 AddTaskESDFilterEMCALEventSelect.C:133
 AddTaskESDFilterEMCALEventSelect.C:134
 AddTaskESDFilterEMCALEventSelect.C:135
 AddTaskESDFilterEMCALEventSelect.C:136
 AddTaskESDFilterEMCALEventSelect.C:137
 AddTaskESDFilterEMCALEventSelect.C:138
 AddTaskESDFilterEMCALEventSelect.C:139
 AddTaskESDFilterEMCALEventSelect.C:140
 AddTaskESDFilterEMCALEventSelect.C:141
 AddTaskESDFilterEMCALEventSelect.C:142
 AddTaskESDFilterEMCALEventSelect.C:143
 AddTaskESDFilterEMCALEventSelect.C:144
 AddTaskESDFilterEMCALEventSelect.C:145
 AddTaskESDFilterEMCALEventSelect.C:146
 AddTaskESDFilterEMCALEventSelect.C:147
 AddTaskESDFilterEMCALEventSelect.C:148
 AddTaskESDFilterEMCALEventSelect.C:149
 AddTaskESDFilterEMCALEventSelect.C:150
 AddTaskESDFilterEMCALEventSelect.C:151
 AddTaskESDFilterEMCALEventSelect.C:152
 AddTaskESDFilterEMCALEventSelect.C:153
 AddTaskESDFilterEMCALEventSelect.C:154
 AddTaskESDFilterEMCALEventSelect.C:155
 AddTaskESDFilterEMCALEventSelect.C:156
 AddTaskESDFilterEMCALEventSelect.C:157
 AddTaskESDFilterEMCALEventSelect.C:158
 AddTaskESDFilterEMCALEventSelect.C:159
 AddTaskESDFilterEMCALEventSelect.C:160
 AddTaskESDFilterEMCALEventSelect.C:161
 AddTaskESDFilterEMCALEventSelect.C:162
 AddTaskESDFilterEMCALEventSelect.C:163
 AddTaskESDFilterEMCALEventSelect.C:164
 AddTaskESDFilterEMCALEventSelect.C:165
 AddTaskESDFilterEMCALEventSelect.C:166
 AddTaskESDFilterEMCALEventSelect.C:167
 AddTaskESDFilterEMCALEventSelect.C:168
 AddTaskESDFilterEMCALEventSelect.C:169
 AddTaskESDFilterEMCALEventSelect.C:170
 AddTaskESDFilterEMCALEventSelect.C:171
 AddTaskESDFilterEMCALEventSelect.C:172
 AddTaskESDFilterEMCALEventSelect.C:173
 AddTaskESDFilterEMCALEventSelect.C:174
 AddTaskESDFilterEMCALEventSelect.C:175
 AddTaskESDFilterEMCALEventSelect.C:176
 AddTaskESDFilterEMCALEventSelect.C:177
 AddTaskESDFilterEMCALEventSelect.C:178
 AddTaskESDFilterEMCALEventSelect.C:179
 AddTaskESDFilterEMCALEventSelect.C:180
 AddTaskESDFilterEMCALEventSelect.C:181
 AddTaskESDFilterEMCALEventSelect.C:182
 AddTaskESDFilterEMCALEventSelect.C:183
 AddTaskESDFilterEMCALEventSelect.C:184
 AddTaskESDFilterEMCALEventSelect.C:185
 AddTaskESDFilterEMCALEventSelect.C:186
 AddTaskESDFilterEMCALEventSelect.C:187
 AddTaskESDFilterEMCALEventSelect.C:188
 AddTaskESDFilterEMCALEventSelect.C:189
 AddTaskESDFilterEMCALEventSelect.C:190
 AddTaskESDFilterEMCALEventSelect.C:191
 AddTaskESDFilterEMCALEventSelect.C:192
 AddTaskESDFilterEMCALEventSelect.C:193
 AddTaskESDFilterEMCALEventSelect.C:194
 AddTaskESDFilterEMCALEventSelect.C:195
 AddTaskESDFilterEMCALEventSelect.C:196
 AddTaskESDFilterEMCALEventSelect.C:197
 AddTaskESDFilterEMCALEventSelect.C:198
 AddTaskESDFilterEMCALEventSelect.C:199
 AddTaskESDFilterEMCALEventSelect.C:200
 AddTaskESDFilterEMCALEventSelect.C:201
 AddTaskESDFilterEMCALEventSelect.C:202
 AddTaskESDFilterEMCALEventSelect.C:203
 AddTaskESDFilterEMCALEventSelect.C:204
 AddTaskESDFilterEMCALEventSelect.C:205
 AddTaskESDFilterEMCALEventSelect.C:206
 AddTaskESDFilterEMCALEventSelect.C:207
 AddTaskESDFilterEMCALEventSelect.C:208
 AddTaskESDFilterEMCALEventSelect.C:209
 AddTaskESDFilterEMCALEventSelect.C:210
 AddTaskESDFilterEMCALEventSelect.C:211
 AddTaskESDFilterEMCALEventSelect.C:212
 AddTaskESDFilterEMCALEventSelect.C:213
 AddTaskESDFilterEMCALEventSelect.C:214
 AddTaskESDFilterEMCALEventSelect.C:215
 AddTaskESDFilterEMCALEventSelect.C:216
 AddTaskESDFilterEMCALEventSelect.C:217
 AddTaskESDFilterEMCALEventSelect.C:218
 AddTaskESDFilterEMCALEventSelect.C:219
 AddTaskESDFilterEMCALEventSelect.C:220
 AddTaskESDFilterEMCALEventSelect.C:221
 AddTaskESDFilterEMCALEventSelect.C:222
 AddTaskESDFilterEMCALEventSelect.C:223
 AddTaskESDFilterEMCALEventSelect.C:224
 AddTaskESDFilterEMCALEventSelect.C:225
 AddTaskESDFilterEMCALEventSelect.C:226
 AddTaskESDFilterEMCALEventSelect.C:227
 AddTaskESDFilterEMCALEventSelect.C:228
 AddTaskESDFilterEMCALEventSelect.C:229
 AddTaskESDFilterEMCALEventSelect.C:230
 AddTaskESDFilterEMCALEventSelect.C:231
 AddTaskESDFilterEMCALEventSelect.C:232
 AddTaskESDFilterEMCALEventSelect.C:233
 AddTaskESDFilterEMCALEventSelect.C:234
 AddTaskESDFilterEMCALEventSelect.C:235
 AddTaskESDFilterEMCALEventSelect.C:236
 AddTaskESDFilterEMCALEventSelect.C:237
 AddTaskESDFilterEMCALEventSelect.C:238
 AddTaskESDFilterEMCALEventSelect.C:239
 AddTaskESDFilterEMCALEventSelect.C:240
 AddTaskESDFilterEMCALEventSelect.C:241
 AddTaskESDFilterEMCALEventSelect.C:242
 AddTaskESDFilterEMCALEventSelect.C:243
 AddTaskESDFilterEMCALEventSelect.C:244
 AddTaskESDFilterEMCALEventSelect.C:245
 AddTaskESDFilterEMCALEventSelect.C:246
 AddTaskESDFilterEMCALEventSelect.C:247
 AddTaskESDFilterEMCALEventSelect.C:248
 AddTaskESDFilterEMCALEventSelect.C:249
 AddTaskESDFilterEMCALEventSelect.C:250
 AddTaskESDFilterEMCALEventSelect.C:251
 AddTaskESDFilterEMCALEventSelect.C:252
 AddTaskESDFilterEMCALEventSelect.C:253
 AddTaskESDFilterEMCALEventSelect.C:254
 AddTaskESDFilterEMCALEventSelect.C:255
 AddTaskESDFilterEMCALEventSelect.C:256
 AddTaskESDFilterEMCALEventSelect.C:257
 AddTaskESDFilterEMCALEventSelect.C:258
 AddTaskESDFilterEMCALEventSelect.C:259
 AddTaskESDFilterEMCALEventSelect.C:260
 AddTaskESDFilterEMCALEventSelect.C:261
 AddTaskESDFilterEMCALEventSelect.C:262
 AddTaskESDFilterEMCALEventSelect.C:263
 AddTaskESDFilterEMCALEventSelect.C:264
 AddTaskESDFilterEMCALEventSelect.C:265
 AddTaskESDFilterEMCALEventSelect.C:266
 AddTaskESDFilterEMCALEventSelect.C:267
 AddTaskESDFilterEMCALEventSelect.C:268
 AddTaskESDFilterEMCALEventSelect.C:269
 AddTaskESDFilterEMCALEventSelect.C:270
 AddTaskESDFilterEMCALEventSelect.C:271
 AddTaskESDFilterEMCALEventSelect.C:272
 AddTaskESDFilterEMCALEventSelect.C:273
 AddTaskESDFilterEMCALEventSelect.C:274
 AddTaskESDFilterEMCALEventSelect.C:275
 AddTaskESDFilterEMCALEventSelect.C:276
 AddTaskESDFilterEMCALEventSelect.C:277
 AddTaskESDFilterEMCALEventSelect.C:278
 AddTaskESDFilterEMCALEventSelect.C:279
 AddTaskESDFilterEMCALEventSelect.C:280
 AddTaskESDFilterEMCALEventSelect.C:281
 AddTaskESDFilterEMCALEventSelect.C:282
 AddTaskESDFilterEMCALEventSelect.C:283
 AddTaskESDFilterEMCALEventSelect.C:284
 AddTaskESDFilterEMCALEventSelect.C:285
 AddTaskESDFilterEMCALEventSelect.C:286
 AddTaskESDFilterEMCALEventSelect.C:287
 AddTaskESDFilterEMCALEventSelect.C:288
 AddTaskESDFilterEMCALEventSelect.C:289
 AddTaskESDFilterEMCALEventSelect.C:290
 AddTaskESDFilterEMCALEventSelect.C:291
 AddTaskESDFilterEMCALEventSelect.C:292
 AddTaskESDFilterEMCALEventSelect.C:293
 AddTaskESDFilterEMCALEventSelect.C:294
 AddTaskESDFilterEMCALEventSelect.C:295
 AddTaskESDFilterEMCALEventSelect.C:296
 AddTaskESDFilterEMCALEventSelect.C:297
 AddTaskESDFilterEMCALEventSelect.C:298
 AddTaskESDFilterEMCALEventSelect.C:299
 AddTaskESDFilterEMCALEventSelect.C:300
 AddTaskESDFilterEMCALEventSelect.C:301
 AddTaskESDFilterEMCALEventSelect.C:302
 AddTaskESDFilterEMCALEventSelect.C:303
 AddTaskESDFilterEMCALEventSelect.C:304
 AddTaskESDFilterEMCALEventSelect.C:305
 AddTaskESDFilterEMCALEventSelect.C:306
 AddTaskESDFilterEMCALEventSelect.C:307
 AddTaskESDFilterEMCALEventSelect.C:308
 AddTaskESDFilterEMCALEventSelect.C:309
 AddTaskESDFilterEMCALEventSelect.C:310
 AddTaskESDFilterEMCALEventSelect.C:311
 AddTaskESDFilterEMCALEventSelect.C:312
 AddTaskESDFilterEMCALEventSelect.C:313
 AddTaskESDFilterEMCALEventSelect.C:314
 AddTaskESDFilterEMCALEventSelect.C:315
 AddTaskESDFilterEMCALEventSelect.C:316
 AddTaskESDFilterEMCALEventSelect.C:317
 AddTaskESDFilterEMCALEventSelect.C:318
 AddTaskESDFilterEMCALEventSelect.C:319
 AddTaskESDFilterEMCALEventSelect.C:320
 AddTaskESDFilterEMCALEventSelect.C:321
 AddTaskESDFilterEMCALEventSelect.C:322
 AddTaskESDFilterEMCALEventSelect.C:323
 AddTaskESDFilterEMCALEventSelect.C:324
 AddTaskESDFilterEMCALEventSelect.C:325
 AddTaskESDFilterEMCALEventSelect.C:326
 AddTaskESDFilterEMCALEventSelect.C:327
 AddTaskESDFilterEMCALEventSelect.C:328
 AddTaskESDFilterEMCALEventSelect.C:329
 AddTaskESDFilterEMCALEventSelect.C:330
 AddTaskESDFilterEMCALEventSelect.C:331
 AddTaskESDFilterEMCALEventSelect.C:332
 AddTaskESDFilterEMCALEventSelect.C:333
 AddTaskESDFilterEMCALEventSelect.C:334
 AddTaskESDFilterEMCALEventSelect.C:335
 AddTaskESDFilterEMCALEventSelect.C:336
 AddTaskESDFilterEMCALEventSelect.C:337
 AddTaskESDFilterEMCALEventSelect.C:338
 AddTaskESDFilterEMCALEventSelect.C:339
 AddTaskESDFilterEMCALEventSelect.C:340
 AddTaskESDFilterEMCALEventSelect.C:341
 AddTaskESDFilterEMCALEventSelect.C:342
 AddTaskESDFilterEMCALEventSelect.C:343
 AddTaskESDFilterEMCALEventSelect.C:344
 AddTaskESDFilterEMCALEventSelect.C:345
 AddTaskESDFilterEMCALEventSelect.C:346
 AddTaskESDFilterEMCALEventSelect.C:347
 AddTaskESDFilterEMCALEventSelect.C:348
 AddTaskESDFilterEMCALEventSelect.C:349
 AddTaskESDFilterEMCALEventSelect.C:350
 AddTaskESDFilterEMCALEventSelect.C:351
 AddTaskESDFilterEMCALEventSelect.C:352
 AddTaskESDFilterEMCALEventSelect.C:353
 AddTaskESDFilterEMCALEventSelect.C:354
 AddTaskESDFilterEMCALEventSelect.C:355
 AddTaskESDFilterEMCALEventSelect.C:356
 AddTaskESDFilterEMCALEventSelect.C:357
 AddTaskESDFilterEMCALEventSelect.C:358
 AddTaskESDFilterEMCALEventSelect.C:359
 AddTaskESDFilterEMCALEventSelect.C:360
 AddTaskESDFilterEMCALEventSelect.C:361
 AddTaskESDFilterEMCALEventSelect.C:362
 AddTaskESDFilterEMCALEventSelect.C:363
 AddTaskESDFilterEMCALEventSelect.C:364
 AddTaskESDFilterEMCALEventSelect.C:365
 AddTaskESDFilterEMCALEventSelect.C:366
 AddTaskESDFilterEMCALEventSelect.C:367
 AddTaskESDFilterEMCALEventSelect.C:368
 AddTaskESDFilterEMCALEventSelect.C:369
 AddTaskESDFilterEMCALEventSelect.C:370
 AddTaskESDFilterEMCALEventSelect.C:371
 AddTaskESDFilterEMCALEventSelect.C:372
 AddTaskESDFilterEMCALEventSelect.C:373
 AddTaskESDFilterEMCALEventSelect.C:374
 AddTaskESDFilterEMCALEventSelect.C:375
 AddTaskESDFilterEMCALEventSelect.C:376