ROOT logo
// #include <Riostream.h>
// #include <TChain.h>
// #include <TVectorT.h> 
// #include <TVector3.h> 
// #include <TFile.h>
// #include <TH1.h> 
// #include <TClonesArray.h>
// #include <TObjArray.h>
// #include <TObjString.h>
// #include <TFormula.h>
// #include <TString.h>
// #include <TRefArray.h>
// #include <TNtuple.h>
// #include <TArrayF.h>


#include "AliJFilter.h" 
#include "AliAnalysisManager.h"
#include "AliAnalysisTaskSE.h"
#include "AliESDEvent.h" 
#include "AliMCEvent.h" 
#include "AliStack.h" 
#include "AliGenEventHeader.h"
#include "AliGenCocktailEventHeader.h"
#include "AliGenPythiaEventHeader.h"
#include "AliInputEventHandler.h"
#include "AliESDCaloCluster.h" 
#include "AliAODEvent.h"
#include "AliAODHeader.h"
#include "AliAODHandler.h"
#include "AliLog.h"
#include "AliESDVertex.h"
#include "AliESDtrack.h"
#include "AliAODTrack.h"
#include "AliAnalysisFilter.h"
#include "AliESDtrackCuts.h"
#include "AliAODVertex.h" 
#include "AliAODTracklets.h" 
#include "AliAODPid.h" 
#include "AliAODMCHeader.h"
#include "AliAODMCParticle.h"
#include "AliESDUtils.h"
//#include "AliESDVZERO.h" 
#include "AliCentrality.h" 
#include "AliAODTracklets.h"
#include "AliMultiplicity.h"
#include "AliJConst.h"
#include "AliESDRun.h"
#include "AliDAQ.h"
#include "AliESDVZERO.h"
#include "AliExternalTrackParam.h"
#include "AliHeader.h" 
//== EMCAL
#include "AliESDCaloCluster.h"
#include "AliEMCALGeometry.h"
#include "AliVCluster.h"
#include "AliVCaloCells.h"
#include "AliEMCALRecoUtils.h"
#include "AliEMCALPIDUtils.h"

#include "AliJTrack.h"
#include "AliJMCTrack.h"
#include "AliJPhoton.h"
//#include "AliJCaloCell.h"
#include "AliJEventHeader.h"
#include "AliJRunHeader.h"

#include "AliPIDResponse.h"
#include "AliPIDCombined.h"
#include "AliPHOSGeoUtils.h"
#include "AliAnalysisUtils.h"


ClassImp(AliJFilter);

//______________________________________________________________________________
AliJFilter::AliJFilter() :   
	TNamed(),
	fEsdTrackCuts(0x0), 
	fESDFilter(0x0), 
	fIsRealOrMC(0),
	fStoreEventPlaneSource(0),
	fOADBPath(),
	fCaloClustersArr(0),
	fClusterThreshold(0),
	fTrackThreshold(0),
	fEventSuccess(0),
	fMcMap(0),
	fTrackList(0),
	fMCTrackList(0x0),
	fPhotonList(0x0),
	fCaloCellList(0x0),
	fHeaderList(0x0),
	fRunInfoList(0x0),
	fPIDResponse(0x0),
	fPIDCombined(0x0),
	fVZEROData(0x0), 
	fTZEROData(0x0), 
	//fFMDData(0x0), 
	fZDCData(0x0), 
	fEMCLabels(0),
	fEMCTreeLabels(0),
	fAliJRunHeader(0x0),
	fEMCALGeometry(0x0),    
	fEMCALRecoUtils(0x0),    
	fPHOSGeom(0x0),
	fAnaUtils(0x0),
	fMyTask(0x0)
{
	//Default constructor
}

//______________________________________________________________________________
AliJFilter::AliJFilter(const char *name,AliAnalysisTaskSE *task):
	TNamed(name,name), 
	fEsdTrackCuts(0x0), 
	fESDFilter(0x0), 
	fIsRealOrMC(0),
	fStoreEventPlaneSource(0),
	fOADBPath(),
	fCaloClustersArr(0),
	fClusterThreshold(0),
	fTrackThreshold(0),
	fEventSuccess(0),
	fMcMap(0),
	fTrackList(0),
	fMCTrackList(0x0),
	fPhotonList(0x0),
	fCaloCellList(0x0),
	fHeaderList(0x0),
	fRunInfoList(0x0),
	fPIDResponse(0x0),
	fPIDCombined(0x0),
	fVZEROData(0x0), 
	fTZEROData(0x0), 
	//fFMDData(0x0), 
	fZDCData(0x0), 
	fEMCLabels(0),
	fEMCTreeLabels(0),
	fAliJRunHeader(0x0),
	fEMCALGeometry(0x0),    
	fEMCALRecoUtils(0x0),    
	fPHOSGeom(0x0),
	fAnaUtils(0x0),
	fMyTask(0x0)
{
	// Constructor
	if(task->DebugLevel() > 5) cout << "---- AliJFilter Constructor ----"<<endl;

}

//____________________________________________________________________________
AliJFilter::AliJFilter(const AliJFilter& ap) :
	TNamed(ap.GetName(), ap.GetTitle()),
	fEsdTrackCuts(ap.fEsdTrackCuts), 
	fESDFilter(ap.fESDFilter), 
	fIsRealOrMC(ap.fIsRealOrMC),
	fStoreEventPlaneSource(ap.fStoreEventPlaneSource),
	fOADBPath(ap.fOADBPath),
	fCaloClustersArr(ap.fCaloClustersArr),
	fClusterThreshold(ap.fClusterThreshold),
	fTrackThreshold(ap.fTrackThreshold),
	fEventSuccess(ap.fEventSuccess),
	fMcMap(ap.fMcMap),
	fTrackList(ap.fTrackList),
	fMCTrackList(ap.fMCTrackList),
	fPhotonList(ap.fPhotonList),
	fCaloCellList(ap.fCaloCellList),
	fHeaderList(ap.fHeaderList),
	fRunInfoList(ap.fRunInfoList),
	fPIDResponse(ap.fPIDResponse),
	fPIDCombined(ap.fPIDCombined),
	fVZEROData(ap.fVZEROData), 
	fTZEROData(ap.fTZEROData), 
	//fFMDData(ap.fFMDData), 
	fZDCData(ap.fZDCData), 
	fEMCLabels(ap.fEMCLabels),
	fEMCTreeLabels(ap.fEMCTreeLabels),
	fAliJRunHeader(ap.fAliJRunHeader),
	fEMCALGeometry(ap.fEMCALGeometry),    
	fEMCALRecoUtils(ap.fEMCALRecoUtils),    
	fPHOSGeom(ap.fPHOSGeom),
	fAnaUtils(ap.fAnaUtils),
	fMyTask(ap.fMyTask)
{ 
	// cpy ctor
}

//_____________________________________________________________________________
AliJFilter& AliJFilter::operator = (const AliJFilter& ap)
{
	// assignment operator

	this->~AliJFilter();
	new(this) AliJFilter(ap);
	return *this;
}

//______________________________________________________________________________
AliJFilter::~AliJFilter()
{
	// destructor 
	delete fMcMap;
	delete fTrackList;
	delete fMCTrackList;
	delete fPhotonList;
	delete fCaloCellList;
	delete fHeaderList;
	delete fAliJRunHeader;
	delete fRunInfoList;
	delete fPIDResponse;
	delete fPIDCombined;
	delete fEMCALRecoUtils;
	delete fEMCALGeometry;
	delete fPHOSGeom;
	delete fAnaUtils;
	delete fVZEROData;
	delete fTZEROData;
	delete fZDCData;
	//  delete fFMDData;


}

//________________________________________________________________________

void AliJFilter::UserCreateOutputObjects()
{  
	//=== create the jcorran outputs objects
	if(fMyTask->DebugLevel() > 1) printf("AliJFilter::UserCreateOutPutData() \n");

	//== RUN HEADER
	cout<<"TEST2 "<<fAliJRunHeader<<endl;
	if(!fAliJRunHeader) fAliJRunHeader = new AliJRunHeader();
	fRunInfoList  = new TList();
	fRunInfoList->SetName("RunInfoList");
	fRunInfoList->SetOwner();
	fRunInfoList->Clear();
	fRunInfoList->Add(fAliJRunHeader);

	//=== Other Objects
	fCaloClustersArr = new TRefArray();
	fEMCALGeometry = AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1");
	fEMCALRecoUtils = new AliEMCALRecoUtils();
	fPHOSGeom = new AliPHOSGeoUtils();
	fAnaUtils = new AliAnalysisUtils();
	fAnaUtils->SetUseOutOfBunchPileUp( kTRUE );
	fMcMap = new TArrayI();

	//=== Set Tree and TClonesArray
	//== TRACKS
	AddList("AliJTrackList", "AliJTrack", &fTrackList, 1000);
	if( fAliJRunHeader->GetStoreEMCalInfo() ){
		AddList("AliJPhotonList", "AliJPhoton", &fPhotonList, 1000);
		//BS AddList("AliJCaloCell", "AliJCaloCell", &fCaloCellList, 1000);
	}
	if( IsMC() ) 
		AddList("AliJMCTrackList", "AliJMCTrack", &fMCTrackList, 1000);
	//== Event Header
	AddList("AliJEventHeaderList", "AliJEventHeader", &fHeaderList, 1000);

	//== EventPlane SRC
	if( fAliJRunHeader->GetStoreEventPlaneSource() ){
		fVZEROData = new AliESDVZERO;
		fTZEROData = new AliESDTZERO;
		fZDCData   = new AliESDZDC;
	}
	//== PID
	//   fPIDCombined = new AliPIDCombined;
	//   fPIDCombined->SetDefaultTPCPriors();
	//   fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC+AliPIDResponse::kDetTOF);
	//   fPIDResponse = ((AliInputEventHandler*) (man->GetInputEventHandler()))->GetPIDResponse();
	//   fPIDResponse->SetOADBPath(AliAnalysisManager::GetOADBPath());
	//   if (!fOADBPath.IsNull()) fPIDResponse->SetOADBPath(fOADBPath.Data());

	cout << "Add(fAliJRunHeader) in UserCreateObject() ======= " << endl;

}

//______________________________________________________________________________
void AliJFilter::UserExec(Option_t* /*option*/) 
{
	// user loop
	AliJRunHeader *runh = fAliJRunHeader;
	Bool_t hasGoodTrack, hasGoodCluster;

	fEventSuccess = kFALSE;

	// Processing of one event
	DEBUG( 5, 1, "------- AliJFilter Exec-------" );
	if(!((fMyTask->Entry()-1)%100))  AliInfo(Form(" Processing event # %lld",  fMyTask->Entry())); 

	//=== Init Variables
	fTrackList->Clear();
	if( IsMC() ){
		fMCTrackList->Clear();
		fEMCLabels.clear();
		fEMCTreeLabels.clear();
	}

	if( fAliJRunHeader->GetStoreEMCalInfo() ){
		fPhotonList->Clear("C");
		fCaloCellList->Clear();
	}
	fHeaderList->Clear();

	hasGoodCluster = kTRUE;
	hasGoodTrack = kTRUE;

	//=== CHECK ESD, AOD, MC event
	if( !Event() ) return;

	if( FromESD() ) {   //Reading ESD  
		DEBUG( 5, 1, "\t------- Start ESD " );
		if( !ESDEvent() ) return;
		if( runh->GetWithoutSDD() && !(ESDEvent()->GetTriggerMask()  & (1<<13)) ) return;

		if( IsMC() ){
			if( ! MCEvent() ) return;
		}
	}

	if( FromAOD() ) {
		DEBUG( 5, 1, "\t------- Start AOD " );
		if( !AODEvent() ) return; 
	}


	// pileup rejection
	if( fAnaUtils->IsPileUpEvent( Event() ))
		return;

	//--------------------------------------------------------------- 
	// RUN Header
	//--------------------------------------------------------------- 
	if(!runh->GetRunNumber()){ //new run has started : I suppose no change of run in process
		runh->SetRunNumber( Event()->GetRunNumber() );
		if( FromESD() ){
			//==== General ====//
			runh->SetBeamEnergy( ESDEvent()->GetBeamEnergy() );
			runh->SetBeamType( ESDEvent()->GetBeamType() );
			//==== Detector status ==//
			if( ESDEvent()->GetCurrentL3() > 0 ) runh->SetL3MagnetFieldPolarity(1);
			if( ESDEvent()->GetCurrentL3() < 0 ) runh->SetL3MagnetFieldPolarity(-1);
			runh->SetL3MagnetFieldIntensity( ESDEvent()->GetMagneticField() );
			runh->SetCurrentL3( ESDEvent()->GetCurrentL3() );
			runh->SetCurrentDip( ESDEvent()->GetCurrentDip() );
			runh->SetUniformBMap( ESDEvent()->IsUniformBMap() );
			//==== Triggers ====//
			const AliESDRun* esdRun = ESDEvent()->GetESDRun();
			for(Int_t triggerBit=0; triggerBit<kRangeTriggerTableAlice; triggerBit++){
				runh->SetActiveTriggersAlice( triggerBit, esdRun->GetTriggerClass(triggerBit) );
			}
		}
		else if( FromAOD() ){
			//==== General ====//
			cout << "Run # = "<< AODEvent()->GetRunNumber() << endl;
			runh->SetRunNumber( AODEvent()->GetRunNumber() );
			//TODO runh->SetBeamEnergy( ESDEvent()->GetBeamEnergy() );
			//TODO runh->SetBeamType( ESDEvent()->GetBeamType() );
			//==== Detector status ==//
			//TODO runh->Setl3MgFieldPolarity(1);
			runh->SetL3MagnetFieldIntensity( AODEvent()->GetMagneticField() );
			runh->SetCurrentL3( AODEvent()->GetMagneticField()*30000.0/5.00668 );
			runh->SetCurrentDip( AODEvent()->GetMuonMagFieldScale()*6000.0 );
			runh->SetUniformBMap( kFALSE ); // TODO is this?
		}
		cout << "Add(fAliJRunHeader) is done =============" << endl;
	}

	//--------------------------------------------------------------- 
	// EventHeader and read Others
	//--------------------------------------------------------------- 
	if( FromESD() ){   //Reading ESD  
		DEBUG( 5, 1, "\t------- Start READ ESD " );

		ReadESDHeader( ESDEvent() );
		ReadESDTracks( ESDEvent() );

		if( fAliJRunHeader->GetStoreEMCalInfo() ){
			ReadESDCaloClusters( ESDEvent() );
			ReadESDCaloCells( ESDEvent() );
		}
		if( IsMC() ){
			ReadMCTracksFromESD();
			//RemapMCLabels();
		}
	}else if( FromAOD() ){ 
		DEBUG( 5, 1, "\t------- Start READ AOD " );
		ReadAODHeader( AODEvent() );
		ReadAODTracks( AODEvent() );
		if( fAliJRunHeader->GetStoreEMCalInfo() ){
			ReadAODCaloClusters( AODEvent() );
			ReadAODCaloCells( AODEvent() );
		}
		if( IsMC() ){
			ReadMCTracksFromAOD();
			//RemapMCLabels();
		}

	}else{
		cout << "Error: Not correct InputDataFormat especified " << endl;
		return;
	}

	if( hasGoodCluster || hasGoodTrack ){
		//=== TODO : need this?
		AliAODHandler* outputHandler = 
			(AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
		outputHandler->SetFillAOD(kTRUE);
		outputHandler->SetFillExtension(kTRUE);
		fEventSuccess = kTRUE;
	}
	else{
		fTrackList->Clear();
		if( IsMC() ){
			fMCTrackList->Clear();
			fEMCLabels.clear();
			fEMCTreeLabels.clear();
		}

		if( fAliJRunHeader->GetStoreEMCalInfo() ){
			fPhotonList->Clear("C");
			fCaloCellList->Clear();
		}
		fHeaderList->Clear();
	}

	DEBUG( 5, 1, "\t------- End UserExec " );
}

//______________________________________________________________________________
void AliJFilter::Init()
{
	// Intialisation of parameters
	AliInfo("Doing initialization") ; 

	//   TString formula(fEsdTrackCuts->GetMaxDCAToVertexXYPtDep());
	//   if(formula.Length()>0){ // momentum dep DCA cut for AOD
	//     formula.ReplaceAll("pt","x");
	//   }
}

//______________________________________________________________________________
void AliJFilter::Terminate(Option_t *)
{
	// termination
	fTrackList->Clear();
	if( IsMC() ) fMCTrackList->Clear();
	if( fAliJRunHeader->GetStoreEMCalInfo() ){
		fPhotonList->Clear();
		fCaloCellList->Clear();
	}
	fHeaderList->Clear();

	// Processing when the event loop is ended
	cout<<"PWG4JCORRAN Analysis DONE !!"<<endl; 

}

//______________________________________________________________________________
void AliJFilter::ReadESDTracks(AliESDEvent * esd)
	//void AliJFilter::ReadESDTracks(const AliESDEvent * esd)
{
	// Read the AliESDtrack and fill the list of AliJTrack containers
	Int_t nt = esd->GetNumberOfTracks();
	DEBUG( 5, 1 , Form("ESD::NumberOfTracks = %d",nt), "AliJFilter::ReadESDTracks" ); 

	//==== Prepare TPC, GCG track ====//
	Float_t ptMaxTPC = 0;
	Float_t ptMinTPC = 1E10;
	Float_t ptMaxGCG = 0;
	Float_t ptMinGCG = 1E10;
	for(int i = 0;i<32;i++){
		AliESDtrackCuts* cuts = (AliESDtrackCuts*)fESDFilter->GetCuts()->At(i);
		if(!cuts) continue;
		Float_t tmp1= 0,tmp2 = 0;
		cuts->GetPtRange(tmp1,tmp2);
		if( TESTBIT ( fAliJRunHeader->GetStoreTPCTrackBitMask(), i ) ){
			if(tmp1<ptMinTPC)ptMinTPC=tmp1;
			if(tmp2>ptMaxTPC)ptMaxTPC=tmp2;
		}
		if( TESTBIT(fAliJRunHeader->GetStoreGCGTrackBitMask() , i ) ){
			if(tmp1<ptMinGCG)ptMinGCG=tmp1;
			if(tmp2>ptMaxGCG)ptMaxGCG=tmp2;
		}
	} 

	//==== loop over tracks ====//
	for(Int_t it = 0; it < nt; it++) { 

		AliESDtrack *track = esd->GetTrack(it);
		if( !track ) continue;
		UInt_t filterMap = fESDFilter->IsSelected( track );
		if(! filterMap ) continue; // apply track selection criteria

		//====create a new AliJTrack and fill the track info
		AliJTrack * ctrack = new( (*fTrackList)[fTrackList->GetEntriesFast()] ) AliJTrack;
		ctrack->SetPxPyPzE(track->Px(), track->Py(), track->Pz(), 0 );
		Double32_t pos[3];
		track->GetXYZ(pos);
		ctrack->SetTrackPos( pos );
		ctrack->SetTPCdEdx( track->GetTPCsignal()  );
		ctrack->SetParticleType(kJNone);
		ctrack->SetCharge(track->Charge());
		ctrack->SetFilterMap( filterMap );
		ctrack->SetLabel( track->GetLabel() );

		ReadESDPID( track, ctrack );
		//==== TPC Tracks ====//
		if( filterMap & fAliJRunHeader->GetStoreTPCTrackBitMask() ) {
			ConvertESDTPCOnlyTracks( esd, it, ctrack, ptMinTPC, ptMaxTPC );
		}
		//==== GCG Tracks ====//
		if( filterMap & fAliJRunHeader->GetStoreGCGTrackBitMask() ) {
			ConvertESDGCGTracks( esd, it, ctrack, ptMinGCG, ptMaxGCG );
		}

		Float_t b[2];
		Float_t bCov[3];
		track->GetImpactParameters(b,bCov);
		//         ctrack->SetDCAtoVertexXY( b[0] );
		//         ctrack->SetDCAtoVertexZ( b[1] );

		//if( track->P()>1 ) DEBUG( 5, 1, Form("P = %f", track->P() ) ) ;

	} // end tracks loop
}

//______________________________________________________________________________
void AliJFilter::ConvertESDTPCOnlyTracks(AliESDEvent* esd, int iTrack, AliJTrack * ctrack, double ptmin, double ptmax)
{

	const AliESDVertex *vtxSPD = esd->GetPrimaryVertexSPD();

	Double_t pos[3] = { 0. };      
	Double_t covTr[21]={0.};
	//Double_t pid[10]={0.};  

	Double_t p[3] = { 0. };

	Double_t pDCA[3] = { 0. }; // momentum at DCA
	Double_t rDCA[3] = { 0. }; // position at DCA
	Float_t  dDCA[2] = {0.};    // DCA to the vertex d and z
	Float_t  cDCA[3] = {0.};    // covariance of impact parameters


	AliESDtrack* esdTrack = esd->GetTrack(iTrack); //carefull do not modify it othwise  need to work with a copy 

	// Track selection

	AliESDtrack *track = AliESDtrackCuts::GetTPCOnlyTrack(const_cast<AliESDEvent*>(esd),esdTrack->GetID());
	if(!track) return;

	if(track->Pt()>0.)
	{
		// only constrain tracks above threshold
		AliExternalTrackParam exParam;
		// take the B-field from the ESD, no 3D fieldMap available at this point
		Bool_t relate = false;
		relate = track->RelateToVertexTPC(vtxSPD,esd->GetMagneticField(),kVeryBig,&exParam);
		if(!relate){
			delete track;
			return;
		}
		// fetch the track parameters at the DCA (unconstraint)
		if(track->GetTPCInnerParam()){
			track->GetTPCInnerParam()->GetPxPyPz(pDCA);
			track->GetTPCInnerParam()->GetXYZ(rDCA);
		}
		// get the DCA to the vertex:
		track->GetImpactParametersTPC(dDCA,cDCA);
		// set the constrained parameters to the track
		track->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
	}

	track->GetPxPyPz(p);

	double p2[3];
	esdTrack->GetInnerPxPyPz(p2);

	Float_t pT = track->Pt();
	if(pT<ptmin||pT>ptmax){
		delete track;
		return;
	}

	track->GetXYZ(pos);
	track->GetCovarianceXYZPxPyPz(covTr);

	ctrack->SetTPCTrack(p[0], p[1], p[2]);

	delete track;
}


void AliJFilter::ConvertESDGCGTracks(AliESDEvent *esd, int iTrack, AliJTrack *ctrack, double ptMin, double ptMax)
{

	Double_t pos[3] = { 0. };      
	Double_t covTr[21]={0.};
	Double_t p[3] = { 0. };

	Double_t pDCA[3] = { 0. }; // momentum at DCA
	Double_t rDCA[3] = { 0. }; // position at DCA
	Float_t  dDCA[2] = {0.};    // DCA to the vertex d and z
	Float_t  cDCA[3] = {0.};    // covariance of impact parameters


	AliESDtrack* esdTrack = esd->GetTrack(iTrack); //carefull do not modify it othwise  need to work with a copy 
	const AliExternalTrackParam * exParamGC = esdTrack->GetConstrainedParam();
	if(!exParamGC) return;

	// fetch the track parameters at the DCA (unconstrained)
	esdTrack->GetPxPyPz(pDCA);
	esdTrack->GetXYZ(rDCA);
	// get the DCA to the vertex:
	esdTrack->GetImpactParameters(dDCA,cDCA);

	if (!esdTrack->GetConstrainedPxPyPz(p)) return;


	Float_t pT = exParamGC->Pt();
	if(pT<ptMin||pT>ptMax){
		return;
	}

	esdTrack->GetConstrainedXYZ(pos);
	exParamGC->GetCovarianceXYZPxPyPz(covTr);

	ctrack->SetGCGTrack(p[0], p[1], p[2]);
}



//_________________________________________________________________________________-
void AliJFilter::ReadESDPID(AliESDtrack *track, AliJTrack *ctrack)
{
	// To reduce the size of output, the variables which cannot be calculated later are only kept
	// expected TOF signal, TPC momentum for expected TPC signal. Measured values are stored in ReadESDTrack()
	// 1. expected TOF signal
	Double_t times[AliPID::kSPECIES];
	track->GetIntegratedTimes(times);
	for(int ip=0; ip < (AliJTrack::kNAliJTrkPID); ip++) {
		ctrack->SetExpectedTOFsignal(AliJTrack::AliJTrkPID(ip), times[ip]);

	}
	// 2. TPC momentum
	Double_t momTPC = track->GetTPCmomentum();
	ctrack->SetTPCmomentum(momTPC);
}

//______________________________________________________________________________
Bool_t AliJFilter::ReadAODTracks(const AliAODEvent * aod)
{
	// AOD track reader
	Bool_t hasGoodTrack;
	hasGoodTrack = kFALSE;

	// Read the AliAODtrack and fill the list of AliJTrack containers
	Int_t nt = aod->GetNumberOfTracks();
	Int_t listnt = 0;

	DEBUG(5, 1, Form("AOD::NumberOfTracks = %d",nt) );

	//==== loop over tracks ====//
	for(Int_t it = 0; it < nt; it++) { 

                AliAODTrack *track = dynamic_cast<AliAODTrack*>(aod->GetTrack(it));
                if(!track) AliFatal("Not a standard AOD track");
		//if(track->GetFilterMap() & (1 << 7) ) continue;
		//if(!AcceptAODTrack(track)) continue; 
		//if(! fEsdTrackCuts->IsSelected(track)) continue; //apply loose selection criteria
		//FK//if(track->GetType() != AliAODTrack::kPrimary) continue; // only primaries 
		//

		AliJTrack * ctrack = new( (*fTrackList)[listnt++] ) AliJTrack;
		ctrack->SetID( track->GetID() );
		ctrack->SetPxPyPzE(track->Px(), track->Py(), track->Pz(), 0 );
		Double32_t pos[3];
		track->GetXYZ(pos);
		ctrack->SetTrackPos( pos );
		//TODO if( fStoreTPCTrack )
		ctrack->SetParticleType(kJNone);
		ctrack->SetCharge(track->Charge());
		ctrack->SetStatus(track->GetStatus());//
		ctrack->SetFlags( track->GetFlags() );
		ctrack->SetLabel( track->GetLabel() );
		//     //FilterMap
		//     UInt_t filterMap=0;
		//     for( unsigned int i=0;i<sizeof(filterMap)*8;i++ ){
		//       if( track->TestFilterBit( BIT(i) )){
		//         SETBIT( filterMap ,  i);
		//       }
		//     }
		ctrack->SetFilterMap( track->GetFilterMap() );

		//PID TODO
		double const * pid = track->PID();
		ctrack->SetPID(AliJTrack::kElectronAliJ,pid[AliAODTrack::kElectron],AliJTrack::kTOF);
		ctrack->SetPID(AliJTrack::kMuonAliJ,    pid[AliAODTrack::kMuon],    AliJTrack::kTOF);
		ctrack->SetPID(AliJTrack::kPionAliJ,    pid[AliAODTrack::kPion],    AliJTrack::kTOF);
		ctrack->SetPID(AliJTrack::kKaonAliJ,    pid[AliAODTrack::kKaon],    AliJTrack::kTOF);
		ctrack->SetPID(AliJTrack::kProtonAliJ,  pid[AliAODTrack::kProton],  AliJTrack::kTOF);
		//TPC
		ctrack->SetTPCnClust(track->GetTPCNcls());
		ctrack->SetTPCdEdx( track->GetTPCsignal()  );
		ctrack->SetTOFsignal( track->GetTOFsignal() );
		ctrack->SetLabel( track->GetLabel() );
		for( int i=0;i<int(sizeof(UInt_t)*8);i++ ){
			ctrack->SetBit( i, track->TestBit( i ));
		}

		// check track threshold
		if( track->Pt() > fTrackThreshold )
			hasGoodTrack = kTRUE;

		//if(fMyTask->DebugLevel() > 5 && track->P()>1 ) cout << "P = " << track->P() << endl;
	} // end tracks loop

	return hasGoodTrack;
}


//______________________________________________________________________________
AliJEventHeader* AliJFilter::ReadCommonHeader(AliVEvent *event){
	//Read the AliVEvent and fill the list of AliJEventHeader containers
	//create a header and fill it
	AliJEventHeader *hdr = new( (*fHeaderList)[fHeaderList->GetEntriesFast()] ) AliJEventHeader;


	// Get Centrality as a percent from 0% to 100%
	AliCentrality *cent = event->GetCentrality();
	if( cent ){
		hdr->SetCentrality( cent->GetCentralityPercentile("V0M"));
		hdr->SetCentralityArray(AliJEventHeader::kcV0M, cent->GetCentralityPercentile("V0M"));
		hdr->SetCentralityArray(AliJEventHeader::kcFMD, cent->GetCentralityPercentile("FMD"));
		hdr->SetCentralityArray(AliJEventHeader::kcTRK, cent->GetCentralityPercentile("TRK"));
		hdr->SetCentralityArray(AliJEventHeader::kcTKL, cent->GetCentralityPercentile("TKL"));
		hdr->SetCentralityArray(AliJEventHeader::kcCL0, cent->GetCentralityPercentile("CL0"));
		hdr->SetCentralityArray(AliJEventHeader::kcCL1, cent->GetCentralityPercentile("CL1"));
		hdr->SetCentralityArray(AliJEventHeader::kcV0MvsFMD, cent->GetCentralityPercentile("V0MvsFMD"));
		hdr->SetCentralityArray(AliJEventHeader::kcTKLvsV0, cent->GetCentralityPercentile("TKLvsV0"));
		hdr->SetCentralityArray(AliJEventHeader::kcZEMvsZDC, cent->GetCentralityPercentile("ZEMvsZDC"));
		hdr->SetCentralityArray(AliJEventHeader::kcV0A, cent->GetCentralityPercentile("V0A"));
		hdr->SetCentralityArray(AliJEventHeader::kcV0C, cent->GetCentralityPercentile("V0C"));
	}
	hdr->SetTriggerMaskAlice(event->GetTriggerMask()); //ULong64_t
	hdr->SetTriggerMaskJCorran(ConvertTriggerMask()); //UInt_t
	hdr->SetEventType(event->GetEventType());
	hdr->SetBunchCrossNumber(event->GetBunchCrossNumber());

	int ncontributors = 0;
	const AliVVertex * vtxESD = event->GetPrimaryVertex();
	if(vtxESD){
		hdr->SetXVertex(vtxESD->GetX()); //FK// EFF
		hdr->SetYVertex(vtxESD->GetY()); //FK// EFF
		hdr->SetZVertex(vtxESD->GetZ());
		//hdr->SetZVertexErr(vtxESD->GetZRes());
		double covMat[6];
		vtxESD->GetCovarianceMatrix(covMat);
		hdr->SetZVertexErr(TMath::Sqrt(covMat[5])); // GetZRes := TMath::Sqrt(fCovZZ)
		ncontributors = vtxESD->GetNContributors(); // get number of contributors to vertex 
		hdr->SetVtxMult( vtxESD->GetNContributors() );
	}else{
		hdr->SetZVertex(9999);
		hdr->SetZVertexErr(9999);
	}
	hdr->SetVtxMult(ncontributors); //FK// EFF contrib to vertex
	return hdr;
}
//______________________________________________________________________________
void AliJFilter::ReadESDHeader(AliESDEvent *esd)
{
	// Read the AliESDEvent and fill the list of AliJEventHeader containers
	if(!esd) return;
	if( fAliJRunHeader->GetRefitESDVertexTracks() )
		AliESDUtils::RefitESDVertexTracks( esd ); // TODO only for LHC11a right?
	AliJEventHeader *hdr = ReadCommonHeader( esd );
	//   AliMultiplicity *fSPDMult =(AliMultiplicity *) esd->GetMultiplicity();
	//   if(fSPDMult) hdr->SetSPDTrackletMult(fSPDMult->GetNumberOfTracklets());
	// This is moved from ReadCommonHeader. AOD should have same.TODO!!
	AliESDVZERO *v0 = esd->GetVZEROData();

	if( v0 ) hdr->SetV0Mult(v0->GetMTotV0A() + v0->GetMTotV0C());
	if( v0 ) hdr->SetV0AMult(v0->GetMTotV0A());
	if( v0 ) hdr->SetV0CMult(v0->GetMTotV0C());

	const AliESDRun* esdRun = esd->GetESDRun();
	//cout <<"========================"<<endl;
	//cout << (esdRun->GetDetectorsInReco() & AliDAQ::kSPD) << endl;
	//cout << (esdRun->GetDetectorsInReco() & AliDAQ::kSSD) << endl;
	//cout << (esdRun->GetDetectorsInReco() & AliDAQ::kSDD) << endl;
	//cout << (esdRun->GetDetectorsInReco() & AliDAQ::kTPC) << endl;
	if(esdRun->GetDetectorsInReco() & AliDAQ::kSPD) hdr->SetSPDTrackletMult(AliESDtrackCuts::GetReferenceMultiplicity( esd, AliESDtrackCuts::kTracklets, 1.0 ));
	if((esdRun->GetDetectorsInReco() & AliDAQ::kSSD) || (esdRun->GetDetectorsInReco() & AliDAQ::kSDD)) hdr->SetITSSATrackletMult(AliESDtrackCuts::GetReferenceMultiplicity( esd, AliESDtrackCuts::kTrackletsITSSA, 1.0 ));
	if(esdRun->GetDetectorsInReco() & AliDAQ::kTPC) hdr->SetITSTPCTrackletMult(AliESDtrackCuts::GetReferenceMultiplicity( esd, AliESDtrackCuts::kTrackletsITSTPC, 1.0 ));


	//TODO  Store Detector data
	if( fAliJRunHeader->GetStoreEventPlaneSource() ){
		*fVZEROData = *esd->GetVZEROData();
		*fTZEROData = AliESDTZERO(*esd->GetESDTZERO());
		*fZDCData  = *esd->GetESDZDC();
	}
	hdr->SetEventID( esd->GetEventNumberInFile());
	//const AliESDVertex * vtxESD = esd->GetPrimaryVertex();
	//if( vtxESD->GetStatus() == 0 ) hdr->SetVtxMult( 0 );
	// if fNcontributes > 0 then status is always true. do we need this?

	//==== MC ====/
	if( IsMC() ){
		const AliVVertex * primaryMCVertex = MCEvent()->GetPrimaryVertex();
		//cout<<"AliMCEvent = "<<MCEvent()<<endl;
		//cout<<"AliVVertex = "<<primaryMCVertex<<endl;
		if( primaryMCVertex ){
			hdr->SetXVertexMC( primaryMCVertex->GetX() );
			hdr->SetYVertexMC( primaryMCVertex->GetY() );
			hdr->SetZVertexMC( primaryMCVertex->GetZ() );
		}
		AliESDHeader * esdHeader = esd->GetHeader();
		hdr->SetL0TriggerInputs( esdHeader->GetL0TriggerInputs() );
	}
}

//______________________________________________________________________________
void AliJFilter::ReadAODHeader(AliAODEvent *aod)
{  
	//Read the AliAODEvent and fill the list of AliJEventHeader containers
	AliJEventHeader *hdr = ReadCommonHeader( aod );

	const AliAODTracklets *trackletsSPD = aod->GetTracklets();
	if(trackletsSPD){
		hdr->SetSPDTrackletMult(trackletsSPD->GetNumberOfTracklets());
	}

	hdr->SetFiredTriggers( aod->GetFiredTriggerClasses() );
	//TODO hdr->SetEventID( esd->GetEventNumberInFile());
	//==== MC ====//
	if( IsMC() ){
		AliAODMCHeader *aodMCheader = (AliAODMCHeader *) aod->FindListObject(AliAODMCHeader::StdBranchName());
		hdr->SetXVertexMC( aodMCheader->GetVtxX() );
		hdr->SetYVertexMC( aodMCheader->GetVtxY() );
		hdr->SetZVertexMC( aodMCheader->GetVtxZ() );
	}

	AliAODHeader * ah = dynamic_cast<AliAODHeader*>(aod->GetHeader());
        if(!ah) AliFatal("Not a standard AOD");
	hdr->SetESDFileName( ah->GetESDFileName() );
	hdr->SetEventNumberESDFile( ah->GetEventNumberESDFile() );
}

//______________________________________________________________________________
Int_t AliJFilter::GetSuperModuleNumber(bool isemcal, AliVCluster *cluster, AliVCaloCells *cells, Int_t absId)
{
	//get super module number 
	if(isemcal){
		Int_t absIdMax  = -1, iSM =-1, ieta = -1, iphi = -1;
		Bool_t shared = kFALSE;
		fEMCALRecoUtils->GetMaxEnergyCell(fEMCALGeometry, cells, cluster, absIdMax,  iSM, ieta, iphi, shared);

		if(iSM < 0 || iphi < 0 || ieta < 0 ) 
		{
			AliFatal(Form("Negative value for super module: %d, or cell ieta: %d, or cell iphi: %d, check EMCAL geometry name\n",
						iSM,ieta,iphi));
		}

		return iSM ;

	} else {
		Int_t    relId[4];
		if ( absId >= 0) {
			fPHOSGeom->AbsToRelNumbering(absId,relId);
			fPHOSGeom->AbsToRelNumbering(absId,relId);
			return relId[0]-1; 
		} else return -1;
	}//PHOS

	return -1;
}

//______________________________________________________________________________
Double_t * AliJFilter::GetCellsAmplitude( bool isemcal, AliVCluster *cluster, AliVCaloCells *emCells, AliVCaloCells *phoCells )
{
	// cell amplitude reader
	Int_t iCell, nCell;
	UShort_t *cellAddrs;
	Double_t *amps;

	// get cluster cells
	nCell = cluster->GetNCells();

	amps = new Double_t[nCell];

	// get the cell addresses
	cellAddrs = cluster->GetCellsAbsId();

	// get the cell amplitudes
	for( iCell = 0; iCell < nCell; iCell++ ){
		if( isemcal )
			amps[iCell] = emCells->GetCellAmplitude( cellAddrs[iCell] );
		else
			amps[iCell] = phoCells->GetCellAmplitude( cellAddrs[iCell] );

	}

	return amps;
}

//_____________________________________________________________________________

UInt_t AliJFilter::ConvertTriggerMask(){

	//convert alice trigger mask to jcorran trigger mask
	UInt_t triggerMaskJC=0;
	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kMB){
		// minimum bias TBit 0 
		triggerMaskJC |= (1<<kMinBiasTriggerBitJCorran); 
		fAliJRunHeader->SetActiveTriggersJCorran( kMinBiasTriggerBitJCorran, "MinBiasTriggerBitJCorran");
	}

	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kHighMult){
		//high multiplicity trigger TBit 1 
		triggerMaskJC |= (1<<kHighMultTriggerBitJCorran);
		fAliJRunHeader->SetActiveTriggersJCorran( kHighMultTriggerBitJCorran,"HighMultTriggerBitJCorran");
	}

	if((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
				->IsEventSelected() & AliVEvent::kEMC1) ||
			(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			 ->IsEventSelected() & AliVEvent::kEMC7 )){
		//EMCAL L0   TBit2
		triggerMaskJC |= (1<<kEmc0TriggerBitJCorran);
		fAliJRunHeader->SetActiveTriggersJCorran( kEmc0TriggerBitJCorran,"Emc0TriggerBitJCorran");
	}

	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kEMCEGA){
		//EMCAL Gamma TBit3
		triggerMaskJC |= (1<<kEmc1GammaTriggerBitJCorran);
		fAliJRunHeader->SetActiveTriggersJCorran( kEmc1GammaTriggerBitJCorran,"Emc1GammaTriggerBitJCorran");
	}

	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kEMCEJE){
		//EMCAL JET TBit4
		triggerMaskJC |= (1<<kEmc1JetTriggerBitJCorran);
		fAliJRunHeader->SetActiveTriggersJCorran( kEmc1JetTriggerBitJCorran,"Emc1JetTriggerBitJCorran");
	}

	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kCentral){
		//central trigger TBit 5 
		triggerMaskJC |= (1<<kCentralTriggerBitJCorran);
		fAliJRunHeader->SetActiveTriggersJCorran( kCentralTriggerBitJCorran,"CentralTriggerBitJCorran");
	}

	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kSemiCentral){
		//semi-central trigger TBit 6 
		triggerMaskJC |= (1<<kSemiCentralTriggerBitJCorran);
		fAliJRunHeader->SetActiveTriggersJCorran( kSemiCentralTriggerBitJCorran,"SemiCentralTriggerBitJCorran");
	}

	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kFastOnly){
		//semi-central trigger TBit 6 
		triggerMaskJC |= (1<<kFastOnlyBitJCorran);
		fAliJRunHeader->SetActiveTriggersJCorran( kFastOnlyBitJCorran ,"FastOnlyBitJCorran");
	}

	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
			->IsEventSelected() & AliVEvent::kINT7){
		// minimum bias TBit 0 
		triggerMaskJC |= (1<<kINT7TriggerBitJCorran); 
		fAliJRunHeader->SetActiveTriggersJCorran( kINT7TriggerBitJCorran, "INT7TriggerBitJCorran");
	}

	return triggerMaskJC;
}


//______________________________________________________________________________
void AliJFilter::ReadMCTracksFromESD(){ 
	//store MC information from AliStack
	if(!MCEvent()) return;
	AliStack *stack = MCEvent()->Stack();
	if(!stack) return;
	Int_t np    = MCEvent()->GetNumberOfTracks();

	//  AliGenEventHeader* genHeader = fMC->GenEventHeader();
	//  AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
	//  Double_t ptHard = 0;
	//  Double_t nTrials = 1; // Trials for MC trigger weigth for real data
	//  nTrials = pythiaGenHeader->Trials();
	//  ptHard  = pythiaGenHeader->GetPtHard();
	//  Int_t nprim = stack->GetNtrack();

	Long64_t ntrack = 0;

	for(Long64_t iTrack = 0; iTrack < np; iTrack++){
		AliMCParticle *track = (AliMCParticle*) MCEvent()->GetTrack(iTrack);
		if(!track){
			Printf("ERROR: Could not receive track %d",(int) iTrack);
			continue;
		}
		Bool_t isPrimary = stack->IsPhysicalPrimary(iTrack);
		if(isPrimary){
			//create a new JMCTrack and fill the track info
			AliJMCTrack *ctrack = new( (*fMCTrackList)[ntrack++] ) AliJMCTrack;

			TParticle *partStack = stack->Particle(iTrack);
			Int_t   pdg  = partStack->GetPdgCode();

			Char_t ch     = (Char_t) partStack->GetPDG()->Charge();
			Int_t label    = track->GetLabel();

			ctrack->SetLabel(label);
			ctrack->SetPdgCode(pdg);
			ctrack->SetPxPyPzE( partStack->Px(), partStack->Py(), partStack->Pz(), partStack->Energy());
			ctrack->SetCharge(ch); 
			ctrack->SetFlag(AliJMCTrack::kPrimary, isPrimary);

			ctrack->SetProductionVertex(partStack->Vx(),partStack->Vy(),partStack->Vz());
		}// loop for al primary tracks
	} 
}

//--------------------------------------------------------------------
void AliJFilter::ReadMCTracksFromAOD(){
	//retreive MC particles from event //FKEFF// 
	if(!AODEvent()) return;  TClonesArray *mcArray = (TClonesArray*) AODEvent()->
		FindListObject(AliAODMCParticle::StdBranchName());
	if(!mcArray){
		Printf("No MC particle branch found");
		return;
	}

	Long64_t ntrack = 0;
	Long64_t np = mcArray->GetEntriesFast();

	for(Long64_t it = 0; it < np; it++) {
		AliAODMCParticle *track = (AliAODMCParticle*) mcArray->At(it);
		if(!track){
			Error("ReadEventAODMC", "Could not receive particle %d",(int) it);
			continue;
		}
		bool isPrimary = track->IsPhysicalPrimary();
		if(isPrimary){
			//create a new JMCTrack and fill the track info
			AliJMCTrack *ctrack = new ((*fMCTrackList)[ntrack++]) AliJMCTrack;;

			Int_t   pdg  = track->GetPdgCode();

			Char_t ch     = (Char_t) track->Charge();
			Int_t label    = track->GetLabel();

			ctrack->SetLabel(label);
			ctrack->SetPdgCode(pdg);
			ctrack->SetPxPyPzE( track->Px(), track->Py(), track->Pz(), track->E());
			ctrack->SetCharge(ch);
			ctrack->SetFlag(AliJMCTrack::kPrimary, isPrimary);

			ctrack->SetProductionVertex(track->Xv(),track->Yv(),track->Zv());
		}
	}

}


//--------------------------------------------------------------------
void AliJFilter::RemapMCLabels(){
	// remaps all MC labels to the new arrays

	Int_t i, j, label, mother0, mother1;
	AliJTrack *track;
	AliJPhoton *cluster;
	// BS AliJCaloCell *cell;
	AliJMCTrack *mctrack;

	// tracks
	for( i = 0; i < fTrackList->GetEntries(); i++ ){
		track = (AliJTrack*)fTrackList->At( i );

		track->SetLabel( fMcMap->At( track->GetLabel() ));
	}

	// clusters
	if( fAliJRunHeader->GetStoreEMCalInfo() ){
		for( i = 0; i < fPhotonList->GetEntries(); i++ ){
			cluster = (AliJPhoton*)fPhotonList->At( i );
			for( j = 0; j < cluster->GetNEMCLabel(); j++ ){
				label = cluster->GetEMCLabel( j );
				// no label clusters protection
				if( label >= 0 )
					cluster->SetEMCLabel( j, fMcMap->At( label ));
			}
		}

		/*  BS
		// cells
		for( i = 0; i < fCaloCellList->GetEntries(); i++ ){
		cell = (AliJCaloCell*)fCaloCellList->At( i );
		label = cell->GetMcLabel();
// no label cells protection
if( label >= 0 )
cell->SetMcLabel( fMcMap->At( cell->GetMcLabel() ));
}
*/
}

// MC particles
for( i = 0; i < fMCTrackList->GetEntries(); i++ ){
	mctrack = (AliJMCTrack*)fMCTrackList->At( i );

	mother0 = mctrack->GetMother( 0 );
	mother1 = mctrack->GetMother( 1 );

	if( mother0 >= 0 )
		mother0 = fMcMap->At( mother0 );
	if( mother1 >= 0 )
		mother1 = fMcMap->At( mother1 );

	mctrack->SetMother( mother0, mother1 );
}
}

//--------------------------------------------------------------------


void AliJFilter::PrintOut() const {
	//AliJRunHeader * RunInfo = fAliJRunHeader;
}

//********************************************
//    UTILS
//********************************************
void AliJFilter::AddList(const char* aname, const char* cname, TClonesArray **obj, int nlist){
	*obj = new TClonesArray(cname, nlist);
	(*obj)->SetName(aname);
	(*obj)->SetOwner();
}

 AliJFilter.cxx:1
 AliJFilter.cxx:2
 AliJFilter.cxx:3
 AliJFilter.cxx:4
 AliJFilter.cxx:5
 AliJFilter.cxx:6
 AliJFilter.cxx:7
 AliJFilter.cxx:8
 AliJFilter.cxx:9
 AliJFilter.cxx:10
 AliJFilter.cxx:11
 AliJFilter.cxx:12
 AliJFilter.cxx:13
 AliJFilter.cxx:14
 AliJFilter.cxx:15
 AliJFilter.cxx:16
 AliJFilter.cxx:17
 AliJFilter.cxx:18
 AliJFilter.cxx:19
 AliJFilter.cxx:20
 AliJFilter.cxx:21
 AliJFilter.cxx:22
 AliJFilter.cxx:23
 AliJFilter.cxx:24
 AliJFilter.cxx:25
 AliJFilter.cxx:26
 AliJFilter.cxx:27
 AliJFilter.cxx:28
 AliJFilter.cxx:29
 AliJFilter.cxx:30
 AliJFilter.cxx:31
 AliJFilter.cxx:32
 AliJFilter.cxx:33
 AliJFilter.cxx:34
 AliJFilter.cxx:35
 AliJFilter.cxx:36
 AliJFilter.cxx:37
 AliJFilter.cxx:38
 AliJFilter.cxx:39
 AliJFilter.cxx:40
 AliJFilter.cxx:41
 AliJFilter.cxx:42
 AliJFilter.cxx:43
 AliJFilter.cxx:44
 AliJFilter.cxx:45
 AliJFilter.cxx:46
 AliJFilter.cxx:47
 AliJFilter.cxx:48
 AliJFilter.cxx:49
 AliJFilter.cxx:50
 AliJFilter.cxx:51
 AliJFilter.cxx:52
 AliJFilter.cxx:53
 AliJFilter.cxx:54
 AliJFilter.cxx:55
 AliJFilter.cxx:56
 AliJFilter.cxx:57
 AliJFilter.cxx:58
 AliJFilter.cxx:59
 AliJFilter.cxx:60
 AliJFilter.cxx:61
 AliJFilter.cxx:62
 AliJFilter.cxx:63
 AliJFilter.cxx:64
 AliJFilter.cxx:65
 AliJFilter.cxx:66
 AliJFilter.cxx:67
 AliJFilter.cxx:68
 AliJFilter.cxx:69
 AliJFilter.cxx:70
 AliJFilter.cxx:71
 AliJFilter.cxx:72
 AliJFilter.cxx:73
 AliJFilter.cxx:74
 AliJFilter.cxx:75
 AliJFilter.cxx:76
 AliJFilter.cxx:77
 AliJFilter.cxx:78
 AliJFilter.cxx:79
 AliJFilter.cxx:80
 AliJFilter.cxx:81
 AliJFilter.cxx:82
 AliJFilter.cxx:83
 AliJFilter.cxx:84
 AliJFilter.cxx:85
 AliJFilter.cxx:86
 AliJFilter.cxx:87
 AliJFilter.cxx:88
 AliJFilter.cxx:89
 AliJFilter.cxx:90
 AliJFilter.cxx:91
 AliJFilter.cxx:92
 AliJFilter.cxx:93
 AliJFilter.cxx:94
 AliJFilter.cxx:95
 AliJFilter.cxx:96
 AliJFilter.cxx:97
 AliJFilter.cxx:98
 AliJFilter.cxx:99
 AliJFilter.cxx:100
 AliJFilter.cxx:101
 AliJFilter.cxx:102
 AliJFilter.cxx:103
 AliJFilter.cxx:104
 AliJFilter.cxx:105
 AliJFilter.cxx:106
 AliJFilter.cxx:107
 AliJFilter.cxx:108
 AliJFilter.cxx:109
 AliJFilter.cxx:110
 AliJFilter.cxx:111
 AliJFilter.cxx:112
 AliJFilter.cxx:113
 AliJFilter.cxx:114
 AliJFilter.cxx:115
 AliJFilter.cxx:116
 AliJFilter.cxx:117
 AliJFilter.cxx:118
 AliJFilter.cxx:119
 AliJFilter.cxx:120
 AliJFilter.cxx:121
 AliJFilter.cxx:122
 AliJFilter.cxx:123
 AliJFilter.cxx:124
 AliJFilter.cxx:125
 AliJFilter.cxx:126
 AliJFilter.cxx:127
 AliJFilter.cxx:128
 AliJFilter.cxx:129
 AliJFilter.cxx:130
 AliJFilter.cxx:131
 AliJFilter.cxx:132
 AliJFilter.cxx:133
 AliJFilter.cxx:134
 AliJFilter.cxx:135
 AliJFilter.cxx:136
 AliJFilter.cxx:137
 AliJFilter.cxx:138
 AliJFilter.cxx:139
 AliJFilter.cxx:140
 AliJFilter.cxx:141
 AliJFilter.cxx:142
 AliJFilter.cxx:143
 AliJFilter.cxx:144
 AliJFilter.cxx:145
 AliJFilter.cxx:146
 AliJFilter.cxx:147
 AliJFilter.cxx:148
 AliJFilter.cxx:149
 AliJFilter.cxx:150
 AliJFilter.cxx:151
 AliJFilter.cxx:152
 AliJFilter.cxx:153
 AliJFilter.cxx:154
 AliJFilter.cxx:155
 AliJFilter.cxx:156
 AliJFilter.cxx:157
 AliJFilter.cxx:158
 AliJFilter.cxx:159
 AliJFilter.cxx:160
 AliJFilter.cxx:161
 AliJFilter.cxx:162
 AliJFilter.cxx:163
 AliJFilter.cxx:164
 AliJFilter.cxx:165
 AliJFilter.cxx:166
 AliJFilter.cxx:167
 AliJFilter.cxx:168
 AliJFilter.cxx:169
 AliJFilter.cxx:170
 AliJFilter.cxx:171
 AliJFilter.cxx:172
 AliJFilter.cxx:173
 AliJFilter.cxx:174
 AliJFilter.cxx:175
 AliJFilter.cxx:176
 AliJFilter.cxx:177
 AliJFilter.cxx:178
 AliJFilter.cxx:179
 AliJFilter.cxx:180
 AliJFilter.cxx:181
 AliJFilter.cxx:182
 AliJFilter.cxx:183
 AliJFilter.cxx:184
 AliJFilter.cxx:185
 AliJFilter.cxx:186
 AliJFilter.cxx:187
 AliJFilter.cxx:188
 AliJFilter.cxx:189
 AliJFilter.cxx:190
 AliJFilter.cxx:191
 AliJFilter.cxx:192
 AliJFilter.cxx:193
 AliJFilter.cxx:194
 AliJFilter.cxx:195
 AliJFilter.cxx:196
 AliJFilter.cxx:197
 AliJFilter.cxx:198
 AliJFilter.cxx:199
 AliJFilter.cxx:200
 AliJFilter.cxx:201
 AliJFilter.cxx:202
 AliJFilter.cxx:203
 AliJFilter.cxx:204
 AliJFilter.cxx:205
 AliJFilter.cxx:206
 AliJFilter.cxx:207
 AliJFilter.cxx:208
 AliJFilter.cxx:209
 AliJFilter.cxx:210
 AliJFilter.cxx:211
 AliJFilter.cxx:212
 AliJFilter.cxx:213
 AliJFilter.cxx:214
 AliJFilter.cxx:215
 AliJFilter.cxx:216
 AliJFilter.cxx:217
 AliJFilter.cxx:218
 AliJFilter.cxx:219
 AliJFilter.cxx:220
 AliJFilter.cxx:221
 AliJFilter.cxx:222
 AliJFilter.cxx:223
 AliJFilter.cxx:224
 AliJFilter.cxx:225
 AliJFilter.cxx:226
 AliJFilter.cxx:227
 AliJFilter.cxx:228
 AliJFilter.cxx:229
 AliJFilter.cxx:230
 AliJFilter.cxx:231
 AliJFilter.cxx:232
 AliJFilter.cxx:233
 AliJFilter.cxx:234
 AliJFilter.cxx:235
 AliJFilter.cxx:236
 AliJFilter.cxx:237
 AliJFilter.cxx:238
 AliJFilter.cxx:239
 AliJFilter.cxx:240
 AliJFilter.cxx:241
 AliJFilter.cxx:242
 AliJFilter.cxx:243
 AliJFilter.cxx:244
 AliJFilter.cxx:245
 AliJFilter.cxx:246
 AliJFilter.cxx:247
 AliJFilter.cxx:248
 AliJFilter.cxx:249
 AliJFilter.cxx:250
 AliJFilter.cxx:251
 AliJFilter.cxx:252
 AliJFilter.cxx:253
 AliJFilter.cxx:254
 AliJFilter.cxx:255
 AliJFilter.cxx:256
 AliJFilter.cxx:257
 AliJFilter.cxx:258
 AliJFilter.cxx:259
 AliJFilter.cxx:260
 AliJFilter.cxx:261
 AliJFilter.cxx:262
 AliJFilter.cxx:263
 AliJFilter.cxx:264
 AliJFilter.cxx:265
 AliJFilter.cxx:266
 AliJFilter.cxx:267
 AliJFilter.cxx:268
 AliJFilter.cxx:269
 AliJFilter.cxx:270
 AliJFilter.cxx:271
 AliJFilter.cxx:272
 AliJFilter.cxx:273
 AliJFilter.cxx:274
 AliJFilter.cxx:275
 AliJFilter.cxx:276
 AliJFilter.cxx:277
 AliJFilter.cxx:278
 AliJFilter.cxx:279
 AliJFilter.cxx:280
 AliJFilter.cxx:281
 AliJFilter.cxx:282
 AliJFilter.cxx:283
 AliJFilter.cxx:284
 AliJFilter.cxx:285
 AliJFilter.cxx:286
 AliJFilter.cxx:287
 AliJFilter.cxx:288
 AliJFilter.cxx:289
 AliJFilter.cxx:290
 AliJFilter.cxx:291
 AliJFilter.cxx:292
 AliJFilter.cxx:293
 AliJFilter.cxx:294
 AliJFilter.cxx:295
 AliJFilter.cxx:296
 AliJFilter.cxx:297
 AliJFilter.cxx:298
 AliJFilter.cxx:299
 AliJFilter.cxx:300
 AliJFilter.cxx:301
 AliJFilter.cxx:302
 AliJFilter.cxx:303
 AliJFilter.cxx:304
 AliJFilter.cxx:305
 AliJFilter.cxx:306
 AliJFilter.cxx:307
 AliJFilter.cxx:308
 AliJFilter.cxx:309
 AliJFilter.cxx:310
 AliJFilter.cxx:311
 AliJFilter.cxx:312
 AliJFilter.cxx:313
 AliJFilter.cxx:314
 AliJFilter.cxx:315
 AliJFilter.cxx:316
 AliJFilter.cxx:317
 AliJFilter.cxx:318
 AliJFilter.cxx:319
 AliJFilter.cxx:320
 AliJFilter.cxx:321
 AliJFilter.cxx:322
 AliJFilter.cxx:323
 AliJFilter.cxx:324
 AliJFilter.cxx:325
 AliJFilter.cxx:326
 AliJFilter.cxx:327
 AliJFilter.cxx:328
 AliJFilter.cxx:329
 AliJFilter.cxx:330
 AliJFilter.cxx:331
 AliJFilter.cxx:332
 AliJFilter.cxx:333
 AliJFilter.cxx:334
 AliJFilter.cxx:335
 AliJFilter.cxx:336
 AliJFilter.cxx:337
 AliJFilter.cxx:338
 AliJFilter.cxx:339
 AliJFilter.cxx:340
 AliJFilter.cxx:341
 AliJFilter.cxx:342
 AliJFilter.cxx:343
 AliJFilter.cxx:344
 AliJFilter.cxx:345
 AliJFilter.cxx:346
 AliJFilter.cxx:347
 AliJFilter.cxx:348
 AliJFilter.cxx:349
 AliJFilter.cxx:350
 AliJFilter.cxx:351
 AliJFilter.cxx:352
 AliJFilter.cxx:353
 AliJFilter.cxx:354
 AliJFilter.cxx:355
 AliJFilter.cxx:356
 AliJFilter.cxx:357
 AliJFilter.cxx:358
 AliJFilter.cxx:359
 AliJFilter.cxx:360
 AliJFilter.cxx:361
 AliJFilter.cxx:362
 AliJFilter.cxx:363
 AliJFilter.cxx:364
 AliJFilter.cxx:365
 AliJFilter.cxx:366
 AliJFilter.cxx:367
 AliJFilter.cxx:368
 AliJFilter.cxx:369
 AliJFilter.cxx:370
 AliJFilter.cxx:371
 AliJFilter.cxx:372
 AliJFilter.cxx:373
 AliJFilter.cxx:374
 AliJFilter.cxx:375
 AliJFilter.cxx:376
 AliJFilter.cxx:377
 AliJFilter.cxx:378
 AliJFilter.cxx:379
 AliJFilter.cxx:380
 AliJFilter.cxx:381
 AliJFilter.cxx:382
 AliJFilter.cxx:383
 AliJFilter.cxx:384
 AliJFilter.cxx:385
 AliJFilter.cxx:386
 AliJFilter.cxx:387
 AliJFilter.cxx:388
 AliJFilter.cxx:389
 AliJFilter.cxx:390
 AliJFilter.cxx:391
 AliJFilter.cxx:392
 AliJFilter.cxx:393
 AliJFilter.cxx:394
 AliJFilter.cxx:395
 AliJFilter.cxx:396
 AliJFilter.cxx:397
 AliJFilter.cxx:398
 AliJFilter.cxx:399
 AliJFilter.cxx:400
 AliJFilter.cxx:401
 AliJFilter.cxx:402
 AliJFilter.cxx:403
 AliJFilter.cxx:404
 AliJFilter.cxx:405
 AliJFilter.cxx:406
 AliJFilter.cxx:407
 AliJFilter.cxx:408
 AliJFilter.cxx:409
 AliJFilter.cxx:410
 AliJFilter.cxx:411
 AliJFilter.cxx:412
 AliJFilter.cxx:413
 AliJFilter.cxx:414
 AliJFilter.cxx:415
 AliJFilter.cxx:416
 AliJFilter.cxx:417
 AliJFilter.cxx:418
 AliJFilter.cxx:419
 AliJFilter.cxx:420
 AliJFilter.cxx:421
 AliJFilter.cxx:422
 AliJFilter.cxx:423
 AliJFilter.cxx:424
 AliJFilter.cxx:425
 AliJFilter.cxx:426
 AliJFilter.cxx:427
 AliJFilter.cxx:428
 AliJFilter.cxx:429
 AliJFilter.cxx:430
 AliJFilter.cxx:431
 AliJFilter.cxx:432
 AliJFilter.cxx:433
 AliJFilter.cxx:434
 AliJFilter.cxx:435
 AliJFilter.cxx:436
 AliJFilter.cxx:437
 AliJFilter.cxx:438
 AliJFilter.cxx:439
 AliJFilter.cxx:440
 AliJFilter.cxx:441
 AliJFilter.cxx:442
 AliJFilter.cxx:443
 AliJFilter.cxx:444
 AliJFilter.cxx:445
 AliJFilter.cxx:446
 AliJFilter.cxx:447
 AliJFilter.cxx:448
 AliJFilter.cxx:449
 AliJFilter.cxx:450
 AliJFilter.cxx:451
 AliJFilter.cxx:452
 AliJFilter.cxx:453
 AliJFilter.cxx:454
 AliJFilter.cxx:455
 AliJFilter.cxx:456
 AliJFilter.cxx:457
 AliJFilter.cxx:458
 AliJFilter.cxx:459
 AliJFilter.cxx:460
 AliJFilter.cxx:461
 AliJFilter.cxx:462
 AliJFilter.cxx:463
 AliJFilter.cxx:464
 AliJFilter.cxx:465
 AliJFilter.cxx:466
 AliJFilter.cxx:467
 AliJFilter.cxx:468
 AliJFilter.cxx:469
 AliJFilter.cxx:470
 AliJFilter.cxx:471
 AliJFilter.cxx:472
 AliJFilter.cxx:473
 AliJFilter.cxx:474
 AliJFilter.cxx:475
 AliJFilter.cxx:476
 AliJFilter.cxx:477
 AliJFilter.cxx:478
 AliJFilter.cxx:479
 AliJFilter.cxx:480
 AliJFilter.cxx:481
 AliJFilter.cxx:482
 AliJFilter.cxx:483
 AliJFilter.cxx:484
 AliJFilter.cxx:485
 AliJFilter.cxx:486
 AliJFilter.cxx:487
 AliJFilter.cxx:488
 AliJFilter.cxx:489
 AliJFilter.cxx:490
 AliJFilter.cxx:491
 AliJFilter.cxx:492
 AliJFilter.cxx:493
 AliJFilter.cxx:494
 AliJFilter.cxx:495
 AliJFilter.cxx:496
 AliJFilter.cxx:497
 AliJFilter.cxx:498
 AliJFilter.cxx:499
 AliJFilter.cxx:500
 AliJFilter.cxx:501
 AliJFilter.cxx:502
 AliJFilter.cxx:503
 AliJFilter.cxx:504
 AliJFilter.cxx:505
 AliJFilter.cxx:506
 AliJFilter.cxx:507
 AliJFilter.cxx:508
 AliJFilter.cxx:509
 AliJFilter.cxx:510
 AliJFilter.cxx:511
 AliJFilter.cxx:512
 AliJFilter.cxx:513
 AliJFilter.cxx:514
 AliJFilter.cxx:515
 AliJFilter.cxx:516
 AliJFilter.cxx:517
 AliJFilter.cxx:518
 AliJFilter.cxx:519
 AliJFilter.cxx:520
 AliJFilter.cxx:521
 AliJFilter.cxx:522
 AliJFilter.cxx:523
 AliJFilter.cxx:524
 AliJFilter.cxx:525
 AliJFilter.cxx:526
 AliJFilter.cxx:527
 AliJFilter.cxx:528
 AliJFilter.cxx:529
 AliJFilter.cxx:530
 AliJFilter.cxx:531
 AliJFilter.cxx:532
 AliJFilter.cxx:533
 AliJFilter.cxx:534
 AliJFilter.cxx:535
 AliJFilter.cxx:536
 AliJFilter.cxx:537
 AliJFilter.cxx:538
 AliJFilter.cxx:539
 AliJFilter.cxx:540
 AliJFilter.cxx:541
 AliJFilter.cxx:542
 AliJFilter.cxx:543
 AliJFilter.cxx:544
 AliJFilter.cxx:545
 AliJFilter.cxx:546
 AliJFilter.cxx:547
 AliJFilter.cxx:548
 AliJFilter.cxx:549
 AliJFilter.cxx:550
 AliJFilter.cxx:551
 AliJFilter.cxx:552
 AliJFilter.cxx:553
 AliJFilter.cxx:554
 AliJFilter.cxx:555
 AliJFilter.cxx:556
 AliJFilter.cxx:557
 AliJFilter.cxx:558
 AliJFilter.cxx:559
 AliJFilter.cxx:560
 AliJFilter.cxx:561
 AliJFilter.cxx:562
 AliJFilter.cxx:563
 AliJFilter.cxx:564
 AliJFilter.cxx:565
 AliJFilter.cxx:566
 AliJFilter.cxx:567
 AliJFilter.cxx:568
 AliJFilter.cxx:569
 AliJFilter.cxx:570
 AliJFilter.cxx:571
 AliJFilter.cxx:572
 AliJFilter.cxx:573
 AliJFilter.cxx:574
 AliJFilter.cxx:575
 AliJFilter.cxx:576
 AliJFilter.cxx:577
 AliJFilter.cxx:578
 AliJFilter.cxx:579
 AliJFilter.cxx:580
 AliJFilter.cxx:581
 AliJFilter.cxx:582
 AliJFilter.cxx:583
 AliJFilter.cxx:584
 AliJFilter.cxx:585
 AliJFilter.cxx:586
 AliJFilter.cxx:587
 AliJFilter.cxx:588
 AliJFilter.cxx:589
 AliJFilter.cxx:590
 AliJFilter.cxx:591
 AliJFilter.cxx:592
 AliJFilter.cxx:593
 AliJFilter.cxx:594
 AliJFilter.cxx:595
 AliJFilter.cxx:596
 AliJFilter.cxx:597
 AliJFilter.cxx:598
 AliJFilter.cxx:599
 AliJFilter.cxx:600
 AliJFilter.cxx:601
 AliJFilter.cxx:602
 AliJFilter.cxx:603
 AliJFilter.cxx:604
 AliJFilter.cxx:605
 AliJFilter.cxx:606
 AliJFilter.cxx:607
 AliJFilter.cxx:608
 AliJFilter.cxx:609
 AliJFilter.cxx:610
 AliJFilter.cxx:611
 AliJFilter.cxx:612
 AliJFilter.cxx:613
 AliJFilter.cxx:614
 AliJFilter.cxx:615
 AliJFilter.cxx:616
 AliJFilter.cxx:617
 AliJFilter.cxx:618
 AliJFilter.cxx:619
 AliJFilter.cxx:620
 AliJFilter.cxx:621
 AliJFilter.cxx:622
 AliJFilter.cxx:623
 AliJFilter.cxx:624
 AliJFilter.cxx:625
 AliJFilter.cxx:626
 AliJFilter.cxx:627
 AliJFilter.cxx:628
 AliJFilter.cxx:629
 AliJFilter.cxx:630
 AliJFilter.cxx:631
 AliJFilter.cxx:632
 AliJFilter.cxx:633
 AliJFilter.cxx:634
 AliJFilter.cxx:635
 AliJFilter.cxx:636
 AliJFilter.cxx:637
 AliJFilter.cxx:638
 AliJFilter.cxx:639
 AliJFilter.cxx:640
 AliJFilter.cxx:641
 AliJFilter.cxx:642
 AliJFilter.cxx:643
 AliJFilter.cxx:644
 AliJFilter.cxx:645
 AliJFilter.cxx:646
 AliJFilter.cxx:647
 AliJFilter.cxx:648
 AliJFilter.cxx:649
 AliJFilter.cxx:650
 AliJFilter.cxx:651
 AliJFilter.cxx:652
 AliJFilter.cxx:653
 AliJFilter.cxx:654
 AliJFilter.cxx:655
 AliJFilter.cxx:656
 AliJFilter.cxx:657
 AliJFilter.cxx:658
 AliJFilter.cxx:659
 AliJFilter.cxx:660
 AliJFilter.cxx:661
 AliJFilter.cxx:662
 AliJFilter.cxx:663
 AliJFilter.cxx:664
 AliJFilter.cxx:665
 AliJFilter.cxx:666
 AliJFilter.cxx:667
 AliJFilter.cxx:668
 AliJFilter.cxx:669
 AliJFilter.cxx:670
 AliJFilter.cxx:671
 AliJFilter.cxx:672
 AliJFilter.cxx:673
 AliJFilter.cxx:674
 AliJFilter.cxx:675
 AliJFilter.cxx:676
 AliJFilter.cxx:677
 AliJFilter.cxx:678
 AliJFilter.cxx:679
 AliJFilter.cxx:680
 AliJFilter.cxx:681
 AliJFilter.cxx:682
 AliJFilter.cxx:683
 AliJFilter.cxx:684
 AliJFilter.cxx:685
 AliJFilter.cxx:686
 AliJFilter.cxx:687
 AliJFilter.cxx:688
 AliJFilter.cxx:689
 AliJFilter.cxx:690
 AliJFilter.cxx:691
 AliJFilter.cxx:692
 AliJFilter.cxx:693
 AliJFilter.cxx:694
 AliJFilter.cxx:695
 AliJFilter.cxx:696
 AliJFilter.cxx:697
 AliJFilter.cxx:698
 AliJFilter.cxx:699
 AliJFilter.cxx:700
 AliJFilter.cxx:701
 AliJFilter.cxx:702
 AliJFilter.cxx:703
 AliJFilter.cxx:704
 AliJFilter.cxx:705
 AliJFilter.cxx:706
 AliJFilter.cxx:707
 AliJFilter.cxx:708
 AliJFilter.cxx:709
 AliJFilter.cxx:710
 AliJFilter.cxx:711
 AliJFilter.cxx:712
 AliJFilter.cxx:713
 AliJFilter.cxx:714
 AliJFilter.cxx:715
 AliJFilter.cxx:716
 AliJFilter.cxx:717
 AliJFilter.cxx:718
 AliJFilter.cxx:719
 AliJFilter.cxx:720
 AliJFilter.cxx:721
 AliJFilter.cxx:722
 AliJFilter.cxx:723
 AliJFilter.cxx:724
 AliJFilter.cxx:725
 AliJFilter.cxx:726
 AliJFilter.cxx:727
 AliJFilter.cxx:728
 AliJFilter.cxx:729
 AliJFilter.cxx:730
 AliJFilter.cxx:731
 AliJFilter.cxx:732
 AliJFilter.cxx:733
 AliJFilter.cxx:734
 AliJFilter.cxx:735
 AliJFilter.cxx:736
 AliJFilter.cxx:737
 AliJFilter.cxx:738
 AliJFilter.cxx:739
 AliJFilter.cxx:740
 AliJFilter.cxx:741
 AliJFilter.cxx:742
 AliJFilter.cxx:743
 AliJFilter.cxx:744
 AliJFilter.cxx:745
 AliJFilter.cxx:746
 AliJFilter.cxx:747
 AliJFilter.cxx:748
 AliJFilter.cxx:749
 AliJFilter.cxx:750
 AliJFilter.cxx:751
 AliJFilter.cxx:752
 AliJFilter.cxx:753
 AliJFilter.cxx:754
 AliJFilter.cxx:755
 AliJFilter.cxx:756
 AliJFilter.cxx:757
 AliJFilter.cxx:758
 AliJFilter.cxx:759
 AliJFilter.cxx:760
 AliJFilter.cxx:761
 AliJFilter.cxx:762
 AliJFilter.cxx:763
 AliJFilter.cxx:764
 AliJFilter.cxx:765
 AliJFilter.cxx:766
 AliJFilter.cxx:767
 AliJFilter.cxx:768
 AliJFilter.cxx:769
 AliJFilter.cxx:770
 AliJFilter.cxx:771
 AliJFilter.cxx:772
 AliJFilter.cxx:773
 AliJFilter.cxx:774
 AliJFilter.cxx:775
 AliJFilter.cxx:776
 AliJFilter.cxx:777
 AliJFilter.cxx:778
 AliJFilter.cxx:779
 AliJFilter.cxx:780
 AliJFilter.cxx:781
 AliJFilter.cxx:782
 AliJFilter.cxx:783
 AliJFilter.cxx:784
 AliJFilter.cxx:785
 AliJFilter.cxx:786
 AliJFilter.cxx:787
 AliJFilter.cxx:788
 AliJFilter.cxx:789
 AliJFilter.cxx:790
 AliJFilter.cxx:791
 AliJFilter.cxx:792
 AliJFilter.cxx:793
 AliJFilter.cxx:794
 AliJFilter.cxx:795
 AliJFilter.cxx:796
 AliJFilter.cxx:797
 AliJFilter.cxx:798
 AliJFilter.cxx:799
 AliJFilter.cxx:800
 AliJFilter.cxx:801
 AliJFilter.cxx:802
 AliJFilter.cxx:803
 AliJFilter.cxx:804
 AliJFilter.cxx:805
 AliJFilter.cxx:806
 AliJFilter.cxx:807
 AliJFilter.cxx:808
 AliJFilter.cxx:809
 AliJFilter.cxx:810
 AliJFilter.cxx:811
 AliJFilter.cxx:812
 AliJFilter.cxx:813
 AliJFilter.cxx:814
 AliJFilter.cxx:815
 AliJFilter.cxx:816
 AliJFilter.cxx:817
 AliJFilter.cxx:818
 AliJFilter.cxx:819
 AliJFilter.cxx:820
 AliJFilter.cxx:821
 AliJFilter.cxx:822
 AliJFilter.cxx:823
 AliJFilter.cxx:824
 AliJFilter.cxx:825
 AliJFilter.cxx:826
 AliJFilter.cxx:827
 AliJFilter.cxx:828
 AliJFilter.cxx:829
 AliJFilter.cxx:830
 AliJFilter.cxx:831
 AliJFilter.cxx:832
 AliJFilter.cxx:833
 AliJFilter.cxx:834
 AliJFilter.cxx:835
 AliJFilter.cxx:836
 AliJFilter.cxx:837
 AliJFilter.cxx:838
 AliJFilter.cxx:839
 AliJFilter.cxx:840
 AliJFilter.cxx:841
 AliJFilter.cxx:842
 AliJFilter.cxx:843
 AliJFilter.cxx:844
 AliJFilter.cxx:845
 AliJFilter.cxx:846
 AliJFilter.cxx:847
 AliJFilter.cxx:848
 AliJFilter.cxx:849
 AliJFilter.cxx:850
 AliJFilter.cxx:851
 AliJFilter.cxx:852
 AliJFilter.cxx:853
 AliJFilter.cxx:854
 AliJFilter.cxx:855
 AliJFilter.cxx:856
 AliJFilter.cxx:857
 AliJFilter.cxx:858
 AliJFilter.cxx:859
 AliJFilter.cxx:860
 AliJFilter.cxx:861
 AliJFilter.cxx:862
 AliJFilter.cxx:863
 AliJFilter.cxx:864
 AliJFilter.cxx:865
 AliJFilter.cxx:866
 AliJFilter.cxx:867
 AliJFilter.cxx:868
 AliJFilter.cxx:869
 AliJFilter.cxx:870
 AliJFilter.cxx:871
 AliJFilter.cxx:872
 AliJFilter.cxx:873
 AliJFilter.cxx:874
 AliJFilter.cxx:875
 AliJFilter.cxx:876
 AliJFilter.cxx:877
 AliJFilter.cxx:878
 AliJFilter.cxx:879
 AliJFilter.cxx:880
 AliJFilter.cxx:881
 AliJFilter.cxx:882
 AliJFilter.cxx:883
 AliJFilter.cxx:884
 AliJFilter.cxx:885
 AliJFilter.cxx:886
 AliJFilter.cxx:887
 AliJFilter.cxx:888
 AliJFilter.cxx:889
 AliJFilter.cxx:890
 AliJFilter.cxx:891
 AliJFilter.cxx:892
 AliJFilter.cxx:893
 AliJFilter.cxx:894
 AliJFilter.cxx:895
 AliJFilter.cxx:896
 AliJFilter.cxx:897
 AliJFilter.cxx:898
 AliJFilter.cxx:899
 AliJFilter.cxx:900
 AliJFilter.cxx:901
 AliJFilter.cxx:902
 AliJFilter.cxx:903
 AliJFilter.cxx:904
 AliJFilter.cxx:905
 AliJFilter.cxx:906
 AliJFilter.cxx:907
 AliJFilter.cxx:908
 AliJFilter.cxx:909
 AliJFilter.cxx:910
 AliJFilter.cxx:911
 AliJFilter.cxx:912
 AliJFilter.cxx:913
 AliJFilter.cxx:914
 AliJFilter.cxx:915
 AliJFilter.cxx:916
 AliJFilter.cxx:917
 AliJFilter.cxx:918
 AliJFilter.cxx:919
 AliJFilter.cxx:920
 AliJFilter.cxx:921
 AliJFilter.cxx:922
 AliJFilter.cxx:923
 AliJFilter.cxx:924
 AliJFilter.cxx:925
 AliJFilter.cxx:926
 AliJFilter.cxx:927
 AliJFilter.cxx:928
 AliJFilter.cxx:929
 AliJFilter.cxx:930
 AliJFilter.cxx:931
 AliJFilter.cxx:932
 AliJFilter.cxx:933
 AliJFilter.cxx:934
 AliJFilter.cxx:935
 AliJFilter.cxx:936
 AliJFilter.cxx:937
 AliJFilter.cxx:938
 AliJFilter.cxx:939
 AliJFilter.cxx:940
 AliJFilter.cxx:941
 AliJFilter.cxx:942
 AliJFilter.cxx:943
 AliJFilter.cxx:944
 AliJFilter.cxx:945
 AliJFilter.cxx:946
 AliJFilter.cxx:947
 AliJFilter.cxx:948
 AliJFilter.cxx:949
 AliJFilter.cxx:950
 AliJFilter.cxx:951
 AliJFilter.cxx:952
 AliJFilter.cxx:953
 AliJFilter.cxx:954
 AliJFilter.cxx:955
 AliJFilter.cxx:956
 AliJFilter.cxx:957
 AliJFilter.cxx:958
 AliJFilter.cxx:959
 AliJFilter.cxx:960
 AliJFilter.cxx:961
 AliJFilter.cxx:962
 AliJFilter.cxx:963
 AliJFilter.cxx:964
 AliJFilter.cxx:965
 AliJFilter.cxx:966
 AliJFilter.cxx:967
 AliJFilter.cxx:968
 AliJFilter.cxx:969
 AliJFilter.cxx:970
 AliJFilter.cxx:971
 AliJFilter.cxx:972
 AliJFilter.cxx:973
 AliJFilter.cxx:974
 AliJFilter.cxx:975
 AliJFilter.cxx:976
 AliJFilter.cxx:977
 AliJFilter.cxx:978
 AliJFilter.cxx:979
 AliJFilter.cxx:980
 AliJFilter.cxx:981
 AliJFilter.cxx:982
 AliJFilter.cxx:983
 AliJFilter.cxx:984
 AliJFilter.cxx:985
 AliJFilter.cxx:986
 AliJFilter.cxx:987
 AliJFilter.cxx:988
 AliJFilter.cxx:989
 AliJFilter.cxx:990
 AliJFilter.cxx:991
 AliJFilter.cxx:992
 AliJFilter.cxx:993
 AliJFilter.cxx:994
 AliJFilter.cxx:995
 AliJFilter.cxx:996
 AliJFilter.cxx:997
 AliJFilter.cxx:998
 AliJFilter.cxx:999
 AliJFilter.cxx:1000
 AliJFilter.cxx:1001
 AliJFilter.cxx:1002
 AliJFilter.cxx:1003
 AliJFilter.cxx:1004
 AliJFilter.cxx:1005
 AliJFilter.cxx:1006
 AliJFilter.cxx:1007
 AliJFilter.cxx:1008
 AliJFilter.cxx:1009
 AliJFilter.cxx:1010
 AliJFilter.cxx:1011
 AliJFilter.cxx:1012
 AliJFilter.cxx:1013
 AliJFilter.cxx:1014
 AliJFilter.cxx:1015
 AliJFilter.cxx:1016
 AliJFilter.cxx:1017
 AliJFilter.cxx:1018
 AliJFilter.cxx:1019
 AliJFilter.cxx:1020
 AliJFilter.cxx:1021
 AliJFilter.cxx:1022
 AliJFilter.cxx:1023
 AliJFilter.cxx:1024
 AliJFilter.cxx:1025
 AliJFilter.cxx:1026
 AliJFilter.cxx:1027
 AliJFilter.cxx:1028
 AliJFilter.cxx:1029
 AliJFilter.cxx:1030
 AliJFilter.cxx:1031
 AliJFilter.cxx:1032
 AliJFilter.cxx:1033
 AliJFilter.cxx:1034
 AliJFilter.cxx:1035
 AliJFilter.cxx:1036
 AliJFilter.cxx:1037
 AliJFilter.cxx:1038
 AliJFilter.cxx:1039
 AliJFilter.cxx:1040
 AliJFilter.cxx:1041
 AliJFilter.cxx:1042
 AliJFilter.cxx:1043
 AliJFilter.cxx:1044
 AliJFilter.cxx:1045
 AliJFilter.cxx:1046
 AliJFilter.cxx:1047
 AliJFilter.cxx:1048
 AliJFilter.cxx:1049
 AliJFilter.cxx:1050
 AliJFilter.cxx:1051
 AliJFilter.cxx:1052
 AliJFilter.cxx:1053
 AliJFilter.cxx:1054
 AliJFilter.cxx:1055
 AliJFilter.cxx:1056
 AliJFilter.cxx:1057
 AliJFilter.cxx:1058
 AliJFilter.cxx:1059
 AliJFilter.cxx:1060
 AliJFilter.cxx:1061
 AliJFilter.cxx:1062
 AliJFilter.cxx:1063
 AliJFilter.cxx:1064
 AliJFilter.cxx:1065
 AliJFilter.cxx:1066
 AliJFilter.cxx:1067
 AliJFilter.cxx:1068
 AliJFilter.cxx:1069
 AliJFilter.cxx:1070
 AliJFilter.cxx:1071
 AliJFilter.cxx:1072
 AliJFilter.cxx:1073
 AliJFilter.cxx:1074
 AliJFilter.cxx:1075
 AliJFilter.cxx:1076
 AliJFilter.cxx:1077
 AliJFilter.cxx:1078
 AliJFilter.cxx:1079
 AliJFilter.cxx:1080
 AliJFilter.cxx:1081
 AliJFilter.cxx:1082
 AliJFilter.cxx:1083
 AliJFilter.cxx:1084
 AliJFilter.cxx:1085
 AliJFilter.cxx:1086
 AliJFilter.cxx:1087
 AliJFilter.cxx:1088
 AliJFilter.cxx:1089
 AliJFilter.cxx:1090
 AliJFilter.cxx:1091
 AliJFilter.cxx:1092
 AliJFilter.cxx:1093
 AliJFilter.cxx:1094
 AliJFilter.cxx:1095
 AliJFilter.cxx:1096
 AliJFilter.cxx:1097
 AliJFilter.cxx:1098
 AliJFilter.cxx:1099
 AliJFilter.cxx:1100
 AliJFilter.cxx:1101
 AliJFilter.cxx:1102
 AliJFilter.cxx:1103
 AliJFilter.cxx:1104
 AliJFilter.cxx:1105
 AliJFilter.cxx:1106
 AliJFilter.cxx:1107
 AliJFilter.cxx:1108
 AliJFilter.cxx:1109
 AliJFilter.cxx:1110
 AliJFilter.cxx:1111
 AliJFilter.cxx:1112
 AliJFilter.cxx:1113
 AliJFilter.cxx:1114
 AliJFilter.cxx:1115
 AliJFilter.cxx:1116
 AliJFilter.cxx:1117
 AliJFilter.cxx:1118
 AliJFilter.cxx:1119
 AliJFilter.cxx:1120
 AliJFilter.cxx:1121
 AliJFilter.cxx:1122
 AliJFilter.cxx:1123
 AliJFilter.cxx:1124
 AliJFilter.cxx:1125
 AliJFilter.cxx:1126
 AliJFilter.cxx:1127
 AliJFilter.cxx:1128
 AliJFilter.cxx:1129
 AliJFilter.cxx:1130
 AliJFilter.cxx:1131
 AliJFilter.cxx:1132
 AliJFilter.cxx:1133
 AliJFilter.cxx:1134
 AliJFilter.cxx:1135
 AliJFilter.cxx:1136
 AliJFilter.cxx:1137
 AliJFilter.cxx:1138
 AliJFilter.cxx:1139
 AliJFilter.cxx:1140
 AliJFilter.cxx:1141
 AliJFilter.cxx:1142
 AliJFilter.cxx:1143
 AliJFilter.cxx:1144
 AliJFilter.cxx:1145