]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding structure for global flagging of events in the Services task, usage in Spectru...
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Jul 2010 08:42:50 +0000 (08:42 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Jul 2010 08:42:50 +0000 (08:42 +0000)
PWG4/JetTasks/AliAnalysisHelperJetTasks.cxx
PWG4/JetTasks/AliAnalysisHelperJetTasks.h
PWG4/JetTasks/AliAnalysisTaskJetServices.cxx
PWG4/JetTasks/AliAnalysisTaskJetServices.h
PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.cxx
PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.h
PWG4/macros/AddTaskJetSpectrum2.C
PWG4/macros/AnalysisTrainPWG4Jets.C

index 4a66854fa0c24424d6407182d712fd0c2b0208f4..39fd2e58b0f725c0ec85cd45a4357875ac8dbcd5 100644 (file)
@@ -448,6 +448,24 @@ Bool_t  AliAnalysisHelperJetTasks::Selected(Bool_t bSet,Bool_t bNew){
   return bSelected;
 }
 
+Bool_t  AliAnalysisHelperJetTasks::IsCosmic(){
+  return ((SelectInfo()&kIsCosmic)==kIsCosmic);
+}
+
+Bool_t  AliAnalysisHelperJetTasks::IsPileUp(){
+  return ((SelectInfo()&kIsPileUp)==kIsPileUp);
+}
+
+
+UInt_t  AliAnalysisHelperJetTasks::SelectInfo(Bool_t bSet,UInt_t iNew){
+  static UInt_t iSelectInfo = 0; //
+  if(bSet){
+    iSelectInfo = iNew;
+  }
+  return iSelectInfo;
+}
+
+
 //___________________________________________________________________________________________________________
 
 Bool_t AliAnalysisHelperJetTasks::GetEventShapes(TVector3 &n01, TVector3 * pTrack, Int_t nTracks, Double_t * eventShapes)
index 042a44a30399963452f697f44fe33947dd798250..3ecbf27233cd84c66bd403ba2612a4f1d3ccd60f 100644 (file)
@@ -33,17 +33,24 @@ class AliAnalysisHelperJetTasks : public TObject {
 
 
   enum {kMaxJets = 6}; //  needed for array size not to fragemnt memory on the heap by many new/delete 
+  enum { kNone = 1<<0,kBunchBunch = 1<<1,kBunchEmpty = 1<<2,kEmptyEmpty= 1<<3,
+        kPhysicsSelection = 1<<4, kVertexIn = 1<<5, kIsCosmic = 1<<6, kIsPileUp = 1<<7,kTotalSelections = (1<<8) - 1};
 
   enum Trigger {kAcceptAll = 0,kMB1,kMB2,kMB3,kSPDGFO,kTrigger}; // 
 
   static Bool_t Selected(Bool_t bSet = kFALSE,Bool_t bNew = kTRUE); // static function to store the state of selection from service task
+
+  static Bool_t IsPileUp(); // Wrapper for SelectInfo with PileUp
+  static Bool_t IsCosmic(); // Wrapper for SelectInfo with cosmic
+
+  static UInt_t SelectInfo(Bool_t bSet = kFALSE,UInt_t iNew = 0); // static function to store the state bitmask of the selection from service task
   
   // these methods have been essentially copied from PWG0/AliTriggerAnalysis and expanded to use with AOD
   static Bool_t IsTriggerFired(const AliVEvent* aEsd, Trigger trigger);
 
   private:
   
-  ClassDef(AliAnalysisHelperJetTasks, 1
+  ClassDef(AliAnalysisHelperJetTasks, 2
 };
 
 #endif // ALIANALYSISHELPERJETTASKS_H
index 6aefbc34def9def4e0be25b9e650973cabd2950d..8badcf00c3afae9dad17aa85ea6cab991f32b278 100644 (file)
@@ -70,6 +70,7 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(): AliAnalysisTaskSE(),
   fUseAODInput(kFALSE),
   fUsePhysicsSelection(kFALSE),
   fRealData(kFALSE),
+  fSelectionInfoESD(0),
   fAvgTrials(1),
   fVtxXMean(0),
   fVtxYMean(0),
@@ -80,6 +81,7 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(): AliAnalysisTaskSE(),
   fh1Trials(0x0),
   fh1PtHard(0x0),
   fh1PtHardTrials(0x0),
+  fh1SelectionInfoESD(0x0),
   fh2TriggerCount(0x0),
   fh2ESDTriggerCount(0x0),
   fh2TriggerVtx(0x0),
@@ -96,6 +98,7 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name):
   fUseAODInput(kFALSE),
   fUsePhysicsSelection(kFALSE),
   fRealData(kFALSE),
+  fSelectionInfoESD(0),
   fAvgTrials(1),
   fVtxXMean(0),
   fVtxYMean(0),
@@ -106,6 +109,7 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name):
   fh1Trials(0x0),
   fh1PtHard(0x0),
   fh1PtHardTrials(0x0),
+  fh1SelectionInfoESD(0x0),
   fh2TriggerCount(0x0),
   fh2ESDTriggerCount(0x0),
   fh2TriggerVtx(0x0),
@@ -202,7 +206,10 @@ void AliAnalysisTaskJetServices::UserCreateOutputObjects()
   fHistList->Add(fh1PtHard);
   fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",nBinPt,binLimitsPt);
   fHistList->Add(fh1PtHardTrials);
+  fh1SelectionInfoESD = new TH1F("fh1SelectionInfoESD","Bit Masks that satisfy the selection info",
+                                AliAnalysisHelperJetTasks::kTotalSelections,0.5,AliAnalysisHelperJetTasks::kTotalSelections+0.5);
 
+  fHistList->Add(fh1SelectionInfoESD);
   // 3 decisions, 0 trigger X, X + SPD vertex, X + SPD vertex in range  
   // 3 triggers BB BE/EB EE
 
@@ -246,6 +253,9 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
   AliESDEvent *esd = 0;
 
   AliAnalysisHelperJetTasks::Selected(kTRUE,kFALSE); // set slection to false
+  fSelectionInfoESD = 0; // reset
+  AliAnalysisHelperJetTasks::SelectInfo(kTRUE,fSelectionInfoESD); // set slection to false
+
 
   if(fUseAODInput){    
     aod = dynamic_cast<AliAODEvent*>(InputEvent());
@@ -265,6 +275,8 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
     esd = dynamic_cast<AliESDEvent*>(InputEvent());
   }
   
+  fSelectionInfoESD |= AliAnalysisHelperJetTasks::kNone;
+
   if(esd){
     Float_t run = (Float_t)esd->GetRunNumber();
     const AliESDVertex *vtxESD = esd->GetPrimaryVertex();
@@ -284,6 +296,7 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
        ||esd->GetFiredTriggerClasses().Contains("MB1")
        ||esd->GetFiredTriggerClasses().Contains("CINT6B")){
       iTrig = 0;
+      fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kBunchBunch;
     }
     else if(esd->GetFiredTriggerClasses().Contains("CINT1A")
            ||esd->GetFiredTriggerClasses().Contains("CSMBA")
@@ -293,10 +306,12 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
            ||esd->GetFiredTriggerClasses().Contains("CINT6C")){
       // empty bunch or bunch empty
       iTrig = 1;
+      fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kBunchEmpty;
     }
-    if(esd->GetFiredTriggerClasses().Contains("CINT1-E")
+    else if(esd->GetFiredTriggerClasses().Contains("CINT1-E")
        ||esd->GetFiredTriggerClasses().Contains("CINT6-E")){
       iTrig = 2;
+      fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kEmptyEmpty;
     }
 
     
@@ -323,8 +338,24 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
 
   // Apply additional constraints
   Bool_t esdEventSelected = IsEventSelectedESD(esd);
+  Bool_t esdEventPileUp = IsEventPileUpESD(esd);
+  Bool_t esdEventCosmic = IsEventCosmicESD(esd);
+
   Bool_t aodEventSelected = IsEventSelectedAOD(aod);
-  
+
+  Bool_t physicsSelection = fInputHandler->IsEventSelected();
+
+  if(esdEventSelected) fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kVertexIn;
+  if(esdEventPileUp)   fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kIsPileUp;
+  if(esdEventCosmic)   fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kIsCosmic;
+  if(physicsSelection) fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kPhysicsSelection;
+
+
+  // here we have all selection information, fill histogram
+  for(unsigned int i = 1;i<(UInt_t)fh1SelectionInfoESD->GetNbinsX();i++){
+    if((i&fSelectionInfoESD)==i)fh1SelectionInfoESD->Fill(i);
+  }
+  AliAnalysisHelperJetTasks::SelectInfo(kTRUE,fSelectionInfoESD); // set slection to false
 
   if(esd&&aod&&fDebug){
     if(esdEventSelected&&!aodEventSelected){
@@ -457,6 +488,18 @@ Bool_t AliAnalysisTaskJetServices::IsEventSelectedESD(AliESDEvent* esd){
   return eventSel;
 }
 
+Bool_t AliAnalysisTaskJetServices::IsEventPileUpESD(AliESDEvent* esd){
+  if(!esd)return kFALSE;
+  return esd->IsPileupFromSPD();
+}
+
+Bool_t AliAnalysisTaskJetServices::IsEventCosmicESD(AliESDEvent* esd){
+  if(!esd)return kFALSE;
+  // add track cuts for which we look for cosmics...
+  return kTRUE;
+}
+
+
 Bool_t AliAnalysisTaskJetServices::IsEventSelectedAOD(AliAODEvent* aod){
   if(!aod)return kFALSE;
   const AliAODVertex *vtx = aod->GetPrimaryVertex();
@@ -493,6 +536,7 @@ Bool_t AliAnalysisTaskJetServices::IsEventSelectedAOD(AliAODEvent* aod){
 
 
 
+
 void AliAnalysisTaskJetServices::Terminate(Option_t */*option*/)
 {
   // Terminate analysis
index 3c1c8f8aa09881ea9515439f1ae03aa83026d0b9..ed12c4ffacf5a54d26257e7e650be95701053fb3 100644 (file)
@@ -49,9 +49,13 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     virtual void SetRealData(Bool_t b){fRealData = b;}
     virtual void SetUsePhysicsSelection(Bool_t b){fUsePhysicsSelection = b;}
     Bool_t IsEventSelectedESD(AliESDEvent* esd);
+    Bool_t IsEventPileUpESD(AliESDEvent* esd);
+    Bool_t IsEventCosmicESD(AliESDEvent* esd);
     Bool_t IsEventSelectedAOD(AliAODEvent* aod);
     enum { kAllTriggered = 0,kTriggeredVertex,kTriggeredVertexIn,kSelectedALICE,kSelectedALICEVertexIn,kSelected,kConstraints};
 
+
+
  private:
 
     AliAnalysisTaskJetServices(const AliAnalysisTaskJetServices&);
@@ -60,6 +64,7 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     Bool_t        fUseAODInput;        // take jet from input AOD not from ouptu AOD
     Bool_t        fUsePhysicsSelection;// decide wether we take into account physicsselction task
     Bool_t        fRealData;           // true for real data to allow correct trigger slection
+    UInt_t        fSelectionInfoESD;      // slection info bit mask
     Float_t       fAvgTrials;          // Average number of trials
     Float_t       fVtxXMean;          // mean x for cuts
     Float_t       fVtxYMean;          // mean y for cuts
@@ -71,6 +76,7 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     TH1F*         fh1Trials;           // trials are added
     TH1F*         fh1PtHard;           // Pt har of the event...       
     TH1F*         fh1PtHardTrials;     // Number of trials 
+    TH1F*         fh1SelectionInfoESD; // Masks that satisfy fSelectionInfo
     TH2F*         fh2TriggerCount;     // number of fire triggers in each case
     TH2F*         fh2ESDTriggerCount;  // number of fire triggers in each case
     TH2F*         fh2TriggerVtx;       // vtx. position vs. trigger decision
@@ -79,7 +85,7 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     TH2F*         fh2VtxXY;          // XY position of VTX were available
     TList *fHistList; // Output list
    
-    ClassDef(AliAnalysisTaskJetServices,4)
+    ClassDef(AliAnalysisTaskJetServices,5)
 };
  
 #endif
index 582a1d0eccbab3bd28ffd8960058cf43db46c4dd..53e09fb39e227ebdd5ebd137c607519648f09c29 100644 (file)
@@ -78,6 +78,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): AliAnalysisTaskSE(),
                                                            fUseExternalWeightOnly(kFALSE),
                                                            fLimitGenJetEta(kFALSE),
                                                            fFilterMask(0),
+  fEventSelectionMask(0),
                                                            fAnalysisType(0),
   fTrackTypeRec(kTrackUndef),
   fTrackTypeGen(kTrackUndef),
@@ -158,6 +159,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name):
   fUseExternalWeightOnly(kFALSE),
   fLimitGenJetEta(kFALSE),
   fFilterMask(0),
+  fEventSelectionMask(0),
   fAnalysisType(0),
   fTrackTypeRec(kTrackUndef),
   fTrackTypeGen(kTrackUndef),
@@ -501,13 +503,23 @@ void AliAnalysisTaskJetSpectrum2::Init()
 void AliAnalysisTaskJetSpectrum2::UserExec(Option_t */*option*/)
 {
 
-  if(!AliAnalysisHelperJetTasks::Selected()&&fUseGlobalSelection){
+  Bool_t selected = kTRUE;
+
+  if(fUseGlobalSelection&&fEventSelectionMask==0){
+    selected = AliAnalysisHelperJetTasks::Selected();
+  }
+  else if(fUseGlobalSelection&&fEventSelectionMask>0){
+    selected = ((AliAnalysisHelperJetTasks::SelectInfo()&fEventSelectionMask)==fEventSelectionMask);
+  }
+
+  if(!selected){
     // no selection by the service task, we continue
     if (fDebug > 1)Printf("Not selected %s:%d",(char*)__FILE__,__LINE__);
     PostData(1, fHistList);
     return;
   }
 
+
   //
   // Execute analysis for current event
   //
index 89d8c2ccc86f1e7a33dfc5fb16b6861712d76b98..dac0159b7e9d25b0714f840be67dcfd5eb004fe4 100644 (file)
@@ -58,6 +58,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     virtual void SetTrackTypeGen(Int_t i){fTrackTypeGen = i;}
     virtual void SetTrackTypeRec(Int_t i){fTrackTypeRec = i;}
     virtual void SetFilterMask(UInt_t i){fFilterMask = i;}
+    virtual void SetEventSelectionMask(UInt_t i){fEventSelectionMask = i;}
     // use for the CF
 
 
@@ -108,7 +109,8 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     Bool_t        fUseGlobalSelection;    // Limit the eta of the generated jets
     Bool_t        fUseExternalWeightOnly; // use only external weight
     Bool_t        fLimitGenJetEta;        // Limit the eta of the generated jets
-    UInt_t        fFilterMask;             // filter bit for slecected tracks
+    UInt_t        fFilterMask;            // filter bit for slecected tracks
+    UInt_t        fEventSelectionMask;    // Selection information used to filter events
     Int_t         fAnalysisType;          // Analysis type 
     Int_t         fTrackTypeRec;          // type of tracks used for FF 
     Int_t         fTrackTypeGen;          // type of tracks used for FF 
@@ -176,7 +178,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     TList *fHistList; // Output list
    
 
-    ClassDef(AliAnalysisTaskJetSpectrum2, 4) // Analysis task for standard jet analysis
+    ClassDef(AliAnalysisTaskJetSpectrum2, 5) // Analysis task for standard jet analysis
 };
  
 #endif
index 40dc7bbe0bdf1c6e521c8dbf34bfe8294b38c21b..1536c2d6bd39602cff3451710cf4ffe017db930f 100644 (file)
@@ -1,49 +1,49 @@
-AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec = "jets",const char* bGen = "jetsAODMC_UA104",UInt_t filterMask = 16, Int_t iPhysicsSelection = 1);\r
+AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec = "jets",const char* bGen = "jetsAODMC_UA104",UInt_t filterMask = 16, Int_t iPhysicsSelection = 1,UInt_t iEventSelectionMask = 0);\r
 \r
 \r
-AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2Delta(UInt_t filterMask = 16,Bool_t kUseAODMC = kFALSE,Int_t iPhysicsSelection = 1,UInt_t iFlag){\r
+AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2Delta(UInt_t filterMask = 16,Bool_t kUseAODMC = kFALSE,Int_t iPhysicsSelection = 1,UInt_t iFlag = 0xfffffff, UInt_t iEventSelectionMask = 0){\r
   AliAnalysisTaskJetSpectrum2 *js = 0;\r
   if(kUseAODMC){\r
-    if(iFlag&(1<<0))js = AddTaskJetSpectrum2("jets","jetsAODMC_UA104",filterMask,iPhysicsSelection);\r
-    if(iFlag&(1<<1))js = AddTaskJetSpectrum2("jets","jetsAODMC2_UA104",filterMask,iPhysicsSelection);\r
+    if(iFlag&(1<<0))js = AddTaskJetSpectrum2("jets","jetsAODMC_UA104",filterMask,iPhysicsSelection, iEventSelectionMask);\r
+    if(iFlag&(1<<1))js = AddTaskJetSpectrum2("jets","jetsAODMC2_UA104",filterMask,iPhysicsSelection, iEventSelectionMask);\r
 \r
-    if(iFlag&(1<<2))js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC_FASTJET04",filterMask,iPhysicsSelection);\r
-    if(iFlag&(1<<3))js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC2_FASTJET04",filterMask,iPhysicsSelection);\r
+    if(iFlag&(1<<2))js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC_FASTJET04",filterMask,iPhysicsSelection, iEventSelectionMask);\r
+    if(iFlag&(1<<3))js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC2_FASTJET04",filterMask,iPhysicsSelection,  iEventSelectionMask);\r
 \r
     if(iFlag&(1<<4)){\r
-      js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC_FASTKT04",filterMask,iPhysicsSelection);\r
+      js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC_FASTKT04",filterMask,iPhysicsSelection,iEventSelectionMask);\r
     }\r
-    if(iFlag&(1<<5))js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC2_FASTKT04",filterMask,iPhysicsSelection);\r
-    if(iFlag&(1<<6))js = AddTaskJetSpectrum2("jetsAOD_UA107","jetsAODMC_UA107",filterMask,iPhysicsSelection);\r
+    if(iFlag&(1<<5))js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC2_FASTKT04",filterMask,iPhysicsSelection, iEventSelectionMask);\r
+    if(iFlag&(1<<6))js = AddTaskJetSpectrum2("jetsAOD_UA107","jetsAODMC_UA107",filterMask,iPhysicsSelection, iEventSelectionMask);\r
   }\r
 \r
-  if(iFlag&(1<<7))js = AddTaskJetSpectrum2("jets","jetsAOD_FASTJET04",filterMask,iPhysicsSelection);\r
+  if(iFlag&(1<<7))js = AddTaskJetSpectrum2("jets","jetsAOD_FASTJET04",filterMask,iPhysicsSelection, iEventSelectionMask);\r
 \r
-  if(iFlag&(1<<8))js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","",filterMask,iPhysicsSelection);\r
-  if(iFlag&(1<<9))js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","",filterMask,iPhysicsSelection);\r
-  if(iFlag&(1<<10))js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","",filterMask,iPhysicsSelection);\r
+  if(iFlag&(1<<8))js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","",filterMask,iPhysicsSelection, iEventSelectionMask);\r
+  if(iFlag&(1<<9))js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","",filterMask,iPhysicsSelection, iEventSelectionMask);\r
+  if(iFlag&(1<<10))js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","",filterMask,iPhysicsSelection, iEventSelectionMask);\r
   \r
   if(iFlag&(1<<11)){\r
-    js = AddTaskJetSpectrum2("jetsAOD_UA107","",filterMask,iPhysicsSelection);\r
+    js = AddTaskJetSpectrum2("jetsAOD_UA107","",filterMask,iPhysicsSelection, iEventSelectionMask);\r
     js->SetRecEtaWindow(0.2);\r
   }\r
   if(iFlag&(1<<12)){\r
-    js = AddTaskJetSpectrum2("jetsAOD_FASTJET07","",filterMask,iPhysicsSelection);\r
+    js = AddTaskJetSpectrum2("jetsAOD_FASTJET07","",filterMask,iPhysicsSelection, iEventSelectionMask);\r
     js->SetRecEtaWindow(0.2);\r
   }\r
   if(iFlag&(1<<13)){\r
-    js = AddTaskJetSpectrum2("jetsAOD_FASTKT07","",filterMask,iPhysicsSelection);\r
+    js = AddTaskJetSpectrum2("jetsAOD_FASTKT07","",filterMask,iPhysicsSelection, iEventSelectionMask);\r
     js->SetRecEtaWindow(0.2);\r
   }\r
   if(iFlag&(1<<14)){\r
-    js = AddTaskJetSpectrum2("jetsAOD_SISCONE07","",filterMask,iPhysicsSelection);\r
+    js = AddTaskJetSpectrum2("jetsAOD_SISCONE07","",filterMask,iPhysicsSelection, iEventSelectionMask);\r
     js->SetRecEtaWindow(0.2);\r
   }\r
   return js;\r
 }\r
 \r
 \r
-AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bGen ,UInt_t filterMask,Int_t iPhysicsSelection)\r
+AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bGen ,UInt_t filterMask,Int_t iPhysicsSelection,UInt_t iEventSelectionMask)\r
 {\r
 // Creates a jet fider task, configures it and adds it to the analysis manager.\r
    // Get the pointer to the existing analysis manager via the static access method.\r
@@ -69,7 +69,7 @@ AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bG
    // Create the task and configure it.\r
    //===========================================================================\r
    \r
-   AliAnalysisTaskJetSpectrum2* pwg4spec = new  AliAnalysisTaskJetSpectrum2(Form("JetSpectrum2%s%s",bRec,bGen));\r
+   AliAnalysisTaskJetSpectrum2* pwg4spec = new  AliAnalysisTaskJetSpectrum2(Form("JetSpectrum2%s%s_%010d",bRec,bGen,iEventSelectionMask));\r
       \r
    // or a config file\r
    // pwg4spec->SetAnalysisType(AliAnalysisTaskJetSpectrum2::kAnaMC);\r
@@ -119,13 +119,14 @@ AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bG
    }\r
 \r
    if(iPhysicsSelection)pwg4spec->SelectCollisionCandidates();\r
+   if(iEventSelectionMask)pwg4spec->SetEventSelectionMask(iEventSelectionMask);\r
 \r
    mgr->AddTask(pwg4spec);\r
      \r
    // Create ONLY the output containers for the data produced by the task.\r
    // Get and connect other common input/output containers via the manager as below\r
    //==============================================================================\r
-   AliAnalysisDataContainer *coutput1_Spec = mgr->CreateContainer(Form("pwg4spec2_%s_%s",bRec,bGen), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_spec2_%s_%s",AliAnalysisManager::GetCommonFileName(),bRec,bGen));\r
+   AliAnalysisDataContainer *coutput1_Spec = mgr->CreateContainer(Form("pwg4spec2_%s_%s_%010d",bRec,bGen,iEventSelectionMask),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_spec2_%s_%s_%010d",AliAnalysisManager::GetCommonFileName(),bRec,bGen,iEventSelectionMask));\r
 \r
    mgr->ConnectInput  (pwg4spec, 0, mgr->GetCommonInputContainer());\r
    mgr->ConnectOutput (pwg4spec, 0, mgr->GetCommonOutputContainer());\r
index 7f3f28ff8eed676e2c71626e18fff2a5dd07fe21..feae4c69f7631dcdf2397297e4d920c46ed473b0 100644 (file)
@@ -359,7 +359,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
       if(iJETAN&2){
        UInt_t selection = 0;
        if(!kFillAOD) selection = 0xffffff&~(1<<13)&~(1<<5)&~(1<<6);
-       else selection = 0xffffff&~(1<<13);// selection = 1<<0|1<<1|1<<2|1<<5|1<<6|1<<7|1<<8|1<<9|1<<10|1<<11|1<<12;
+       else selection = 0xffffff&~(1<<13);  // selection = 1<<0|1<<1|1<<2|1<<5|1<<6|1<<7|1<<8|1<<9|1<<10|1<<11|1<<12; (DA takes quite long....)
        AddTaskJetsDelta(kDeltaAODJetName.Data(),kHighPtFilterMask,kUseAODMC,selection); 
       }
       if (!taskjets) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJets cannot run for this train conditions - EXCLUDED");
@@ -429,6 +429,12 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
        if(!iAODanalysis){
         //      taskjetSpectrum = AddTaskJetSpectrum2("jets","tracks32",32,iPhysicsSelection);       // tmp hack to give it a different name
         //      taskjetSpectrum = AddTaskJetSpectrum2("jets","tracks64",64,iPhysicsSelection);      
+        taskjetSpectrum = AddTaskJetSpectrum2("jetsAOD_FASTJET04","",kHighPtFilterMask,iPhysicsSelection, AliAnalysisHelperJetTasks::kIsPileUp|AliAnalysisHelperJetTasks::kPhysicsSelection);      
+        taskjetSpectrum = AddTaskJetSpectrum2("jetsAOD_FASTJET04","",kHighPtFilterMask,iPhysicsSelection,AliAnalysisHelperJetTasks::kNone);      
+        if(kIsMC){
+          taskjetSpectrum = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC_FASTJET04",kHighPtFilterMask,iPhysicsSelection,AliAnalysisHelperJetTasks::kNone);      
+          taskjetSpectrum = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC2_FASTJET04",kHighPtFilterMask,iPhysicsSelection,AliAnalysisHelperJetTasks::kNone);      
+        }
        }
        if (!taskjetSpectrum) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetSpectrum2 cannot run for this train conditions - EXCLUDED");
        taskjetSpectrum->SetDebugLevel(1);