+//_________________________________________________________
+void AliCaloTrackReader::RemapMCLabelForAODs(Int_t & label)
+{
+ // MC label for Cells not remapped after ESD filtering, do it here.
+
+ if(label < 0) return ;
+
+ AliAODEvent * evt = dynamic_cast<AliAODEvent*> (fInputEvent) ;
+ if(!evt) return ;
+
+ TClonesArray * arr = dynamic_cast<TClonesArray*>(evt->FindListObject("mcparticles")) ;
+ if(!arr) return ;
+
+ if(label < arr->GetEntriesFast())
+ {
+ AliAODMCParticle * particle = dynamic_cast<AliAODMCParticle *>(arr->At(label));
+ if(!particle) return ;
+
+ if(label == particle->Label()) return ; // label already OK
+ //else printf("AliCaloTrackReader::RemapMCLabelForAODs() - Label %d - AOD stack %d \n",label, particle->Label());
+ }
+ //else printf("AliCaloTrackReader::RemapMCLabelForAODs() - Label %d > AOD labels %d \n",label, arr->GetEntriesFast());
+
+ // loop on the particles list and check if there is one with the same label
+ for(Int_t ind = 0; ind < arr->GetEntriesFast(); ind++ )
+ {
+ AliAODMCParticle * particle = dynamic_cast<AliAODMCParticle *>(arr->At(ind));
+ if(!particle) continue ;
+
+ if(label == particle->Label())
+ {
+ label = ind;
+ //printf("AliAnalysisTaskEMCALClusterize::RemapMCLabelForAODs() - New Label Index %d \n",label);
+ return;
+ }
+ }
+
+ label = -1;
+
+ //printf("AliCaloTrackReader::RemapMCLabelForAODs() - Label not found set to -1 \n");
+
+}
+
+
+//___________________________________
+void AliCaloTrackReader::ResetLists()
+{
+ // Reset lists, called by the analysis maker
+
+ if(fCTSTracks) fCTSTracks -> Clear();
+ if(fEMCALClusters) fEMCALClusters -> Clear("C");
+ if(fPHOSClusters) fPHOSClusters -> Clear("C");
+
+ fV0ADC[0] = 0; fV0ADC[1] = 0;
+ fV0Mul[0] = 0; fV0Mul[1] = 0;
+
+ if(fNonStandardJets) fNonStandardJets -> Clear("C");
+ fBackgroundJets->Reset();
+
+}
+
+//___________________________________________
+void AliCaloTrackReader::SetEventTriggerBit()
+{
+ // Tag event depeding on trigger name
+
+ fEventTrigMinBias = kFALSE;
+ fEventTrigCentral = kFALSE;
+ fEventTrigSemiCentral = kFALSE;
+ fEventTrigEMCALL0 = kFALSE;
+ fEventTrigEMCALL1Gamma1 = kFALSE;
+ fEventTrigEMCALL1Gamma2 = kFALSE;
+ fEventTrigEMCALL1Jet1 = kFALSE;
+ fEventTrigEMCALL1Jet2 = kFALSE;
+
+ if(fDebug > 0)
+ printf("AliCaloTrackReader::SetEventTriggerBit() - Select trigger mask bit %d - Trigger Event %s\n",fEventTriggerMask,GetFiredTriggerClasses().Data());
+
+ if(fEventTriggerMask <=0 )// in case no mask set
+ {
+ // EMC triggered event? Which type?
+ if( GetFiredTriggerClasses().Contains("-B-") || GetFiredTriggerClasses().Contains("-S-") || GetFiredTriggerClasses().Contains("-I-") )
+ {
+ if ( GetFiredTriggerClasses().Contains("EGA" ) ||
+ GetFiredTriggerClasses().Contains("EG1" ) )
+ {
+ fEventTrigEMCALL1Gamma1 = kTRUE;
+ if( GetFiredTriggerClasses().Contains("EG1" ) && !fFiredTriggerClassName.Contains("EG1") ) fEventTrigEMCALL1Gamma1 = kFALSE;
+ }
+ else if( GetFiredTriggerClasses().Contains("EG2" ) )
+ {
+ fEventTrigEMCALL1Gamma2 = kTRUE;
+ if( !fFiredTriggerClassName.Contains("EG2") ) fEventTrigEMCALL1Gamma2 = kFALSE;
+ }
+ else if( GetFiredTriggerClasses().Contains("EJE" ) ||
+ GetFiredTriggerClasses().Contains("EJ1" ) )
+ {
+ fEventTrigEMCALL1Jet1 = kTRUE;
+ if( GetFiredTriggerClasses().Contains("EJ1" ) && !fFiredTriggerClassName.Contains("EJ1") )
+ fEventTrigEMCALL1Jet1 = kFALSE;
+ }
+ else if( GetFiredTriggerClasses().Contains("EJ2" ) )
+ {
+ fEventTrigEMCALL1Jet2 = kTRUE;
+ if( !fFiredTriggerClassName.Contains("EJ2") ) fEventTrigEMCALL1Jet2 = kFALSE;
+ }
+ else if( GetFiredTriggerClasses().Contains("CEMC") &&
+ !GetFiredTriggerClasses().Contains("EGA" ) &&
+ !GetFiredTriggerClasses().Contains("EJE" ) &&
+ !GetFiredTriggerClasses().Contains("EG1" ) &&
+ !GetFiredTriggerClasses().Contains("EJ1" ) &&
+ !GetFiredTriggerClasses().Contains("EG2" ) &&
+ !GetFiredTriggerClasses().Contains("EJ2" ) )
+ {
+ fEventTrigEMCALL0 = kTRUE;
+ }
+
+ //Min bias event trigger?
+ if (GetFiredTriggerClasses().Contains("CCENT_R2-B-NOPF-ALLNOTRD"))
+ {
+ fEventTrigCentral = kTRUE;
+ }
+ else if(GetFiredTriggerClasses().Contains("CSEMI_R1-B-NOPF-ALLNOTRD"))
+ {
+ fEventTrigSemiCentral = kTRUE;
+ }
+ else if((GetFiredTriggerClasses().Contains("CINT") || GetFiredTriggerClasses().Contains("CPBI2_B1") ) &&
+ GetFiredTriggerClasses().Contains("-NOPF-ALLNOTRD") )
+ {
+ fEventTrigMinBias = kTRUE;
+ }
+ }
+ }
+ else
+ {
+ // EMC L1 Gamma
+ if ( fEventTriggerMask & AliVEvent::kEMCEGA )
+ {
+ //printf("EGA trigger bit\n");
+ if (GetFiredTriggerClasses().Contains("EG1" ) ||
+ GetFiredTriggerClasses().Contains("EGA" ) )
+ {
+ fEventTrigEMCALL1Gamma1 = kTRUE;
+ if( GetFiredTriggerClasses().Contains("EG1" ) && !fFiredTriggerClassName.Contains("EG1") ) fEventTrigEMCALL1Gamma1 = kFALSE;
+ }
+ else if(GetFiredTriggerClasses().Contains("EG2" ))
+ {
+ fEventTrigEMCALL1Gamma2 = kTRUE;
+ if(!fFiredTriggerClassName.Contains("EG2") ) fEventTrigEMCALL1Gamma2 = kFALSE;
+ }
+ }
+ // EMC L1 Jet
+ else if( fEventTriggerMask & AliVEvent::kEMCEJE )
+ {
+ //printf("EJE trigger bit\n");
+ if (GetFiredTriggerClasses().Contains("EJ1" )||
+ GetFiredTriggerClasses().Contains("EJE" ) )
+ {
+ fEventTrigEMCALL1Jet1 = kTRUE;
+ if( GetFiredTriggerClasses().Contains("EJ1" ) && !fFiredTriggerClassName.Contains("EJ1") ) fEventTrigEMCALL1Jet1 = kFALSE;
+ }
+ else if(GetFiredTriggerClasses().Contains("EJ2" ))
+ {
+ fEventTrigEMCALL1Jet2 = kTRUE;
+ if( !fFiredTriggerClassName.Contains("EJ2") ) fEventTrigEMCALL1Jet2 = kFALSE;
+ }
+ }
+ // EMC L0
+ else if((fEventTriggerMask & AliVEvent::kEMC7) ||
+ (fEventTriggerMask & AliVEvent::kEMC1) )
+ {
+ //printf("L0 trigger bit\n");
+ fEventTrigEMCALL0 = kTRUE;
+ }
+ // Min Bias Pb-Pb
+ else if( fEventTriggerMask & AliVEvent::kCentral )
+ {
+ //printf("MB semi central trigger bit\n");
+ fEventTrigSemiCentral = kTRUE;
+ }
+ // Min Bias Pb-Pb
+ else if( fEventTriggerMask & AliVEvent::kSemiCentral )
+ {
+ //printf("MB central trigger bit\n");
+ fEventTrigCentral = kTRUE;
+ }
+ // Min Bias pp, PbPb, pPb
+ else if((fEventTriggerMask & AliVEvent::kMB ) ||
+ (fEventTriggerMask & AliVEvent::kINT7) ||
+ (fEventTriggerMask & AliVEvent::kINT8) ||
+ (fEventTriggerMask & AliVEvent::kAnyINT) )
+ {
+ //printf("MB trigger bit\n");
+ fEventTrigMinBias = kTRUE;
+ }
+ }
+
+ if(fDebug > 0 )
+ printf("AliCaloTrackReader::SetEventTriggerBit() - Event bits: \n \t MB %d, Cen %d, Sem %d, L0 %d, L1G1 %d, L1G2 %d, L1J1 %d, L1J2 %d \n",
+ fEventTrigMinBias, fEventTrigCentral, fEventTrigSemiCentral,
+ fEventTrigEMCALL0 , fEventTrigEMCALL1Gamma1, fEventTrigEMCALL1Gamma2,
+ fEventTrigEMCALL1Jet1 , fEventTrigEMCALL1Jet2);
+
+ if(fBitEGA == 0 && fBitEJE ==0)
+ {
+ // Init the trigger bit once, correct depending on version
+ fBitEGA = 4;
+ fBitEJE = 5;
+
+ TFile* file = AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile();
+
+ const TList *clist = file->GetStreamerInfoCache();
+
+ if(clist)
+ {
+ TStreamerInfo *cinfo = (TStreamerInfo*)clist->FindObject("AliESDCaloTrigger");
+ if(!cinfo) cinfo = (TStreamerInfo*)clist->FindObject("AliAODCaloTrigger");
+
+ if(cinfo)
+ {
+ Int_t classversionid = cinfo->GetClassVersion();
+
+ if (classversionid >= 5)
+ {
+ fBitEGA = 6;
+ fBitEJE = 8;
+ }
+ } else printf("AliCaloTrackReader()::SetEventTriggerBit() - Streamer info for trigger class not available, bit not changed\n");
+ } else printf("AliCaloTrackReader::SetEventTriggerBit() - Streamer list not available!, bit not changed\n");
+
+ } // set once the EJE, EGA trigger bit
+
+}
+
+//____________________________________________________________
+void AliCaloTrackReader::SetInputEvent(AliVEvent* const input)
+{
+ fInputEvent = input;
+ fMixedEvent = dynamic_cast<AliMixedEvent*>(GetInputEvent()) ;
+ if (fMixedEvent)
+ fNMixedEvent = fMixedEvent->GetNumberOfEvents() ;
+
+ //Delete previous vertex
+ if(fVertex)
+ {
+ for (Int_t i = 0; i < fNMixedEvent; i++)
+ {
+ delete [] fVertex[i] ;
+ }
+ delete [] fVertex ;
+ }
+
+ fVertex = new Double_t*[fNMixedEvent] ;
+ for (Int_t i = 0; i < fNMixedEvent; i++)
+ {
+ fVertex[i] = new Double_t[3] ;
+ fVertex[i][0] = 0.0 ;
+ fVertex[i][1] = 0.0 ;
+ fVertex[i][2] = 0.0 ;
+ }
+}
+