/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: Ana Marin, Kathrin Koch, Kenneth Aamodt * * Version 1.0 * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ //////////////////////////////////////////////// //--------------------------------------------- // Class for handling of background calculation //--------------------------------------------- //////////////////////////////////////////////// #include "AliGammaConversionAODBGHandler.h" #include "AliKFParticle.h" #include "AliAODConversionPhoton.h" #include "AliAODConversionMother.h" using namespace std; ClassImp(AliGammaConversionAODBGHandler) AliGammaConversionAODBGHandler::AliGammaConversionAODBGHandler() : TObject(), fNEvents(10), fBGEventCounter(NULL), fBGEventENegCounter(NULL), fBGProbability(NULL), fBGEventVertex(NULL), fNBinsZ(0), fNBinsMultiplicity(0), fBinLimitsArrayZ(NULL), fBinLimitsArrayMultiplicity(NULL), fBGEvents(), fBGEventsENeg() { // constructor } AliGammaConversionAODBGHandler::AliGammaConversionAODBGHandler(UInt_t binsZ,UInt_t binsMultiplicity,UInt_t nEvents) : TObject(), fNEvents(nEvents), fBGEventCounter(NULL), fBGEventENegCounter(NULL), fBGProbability(NULL), fBGEventVertex(NULL), fNBinsZ(binsZ), fNBinsMultiplicity(binsMultiplicity), fBinLimitsArrayZ(NULL), fBinLimitsArrayMultiplicity(NULL), fBGEvents(binsZ,AliGammaConversionMultipicityVector(binsMultiplicity,AliGammaConversionBGEventVector(nEvents))), fBGEventsENeg(binsZ,AliGammaConversionMultipicityVector(binsMultiplicity,AliGammaConversionBGEventVector(nEvents))) { // constructor } AliGammaConversionAODBGHandler::AliGammaConversionAODBGHandler(const AliGammaConversionAODBGHandler & original) : TObject(original), fNEvents(original.fNEvents), fBGEventCounter(original.fBGEventCounter), fBGEventENegCounter(original.fBGEventENegCounter), fBGProbability(original.fBGProbability), fBGEventVertex(original.fBGEventVertex), fNBinsZ(original.fNBinsZ), fNBinsMultiplicity(original.fNBinsMultiplicity), fBinLimitsArrayZ(original.fBinLimitsArrayZ), fBinLimitsArrayMultiplicity(original.fBinLimitsArrayMultiplicity), fBGEvents(original.fBGEvents), fBGEventsENeg(original.fBGEventsENeg) { //copy constructor } AliGammaConversionAODBGHandler & AliGammaConversionAODBGHandler::operator = (const AliGammaConversionAODBGHandler & /*source*/) { // assignment operator return *this; } AliGammaConversionAODBGHandler::~AliGammaConversionAODBGHandler(){ //Kenneth remember to clear memory!!!!!!!!!!!!!!!!!!!!! if(fBGEventCounter){ for(Int_t z=0;z= fBinLimitsArrayZ[i] && zvalue <= fBinLimitsArrayZ[i+1]){ return i; } } return fNBinsZ-1; } Int_t AliGammaConversionAODBGHandler::GetMultiplicityBinIndex(Int_t multiplicity) const{ // see header file for documantation if(fNBinsMultiplicity<2){ return 0; } for(Int_t i=0; i= fBinLimitsArrayMultiplicity[i] && multiplicity < fBinLimitsArrayMultiplicity[i+1]){ return i; } } return fNBinsMultiplicity-1; } void AliGammaConversionAODBGHandler::AddEvent(TList* const eventGammas,Double_t xvalue, Double_t yvalue, Double_t zvalue, Int_t multiplicity){ // see header file for documantation // cout<<"Entering the AddEvent function"<= fNEvents){ fBGEventCounter[z][m]=0; } Int_t eventCounter=fBGEventCounter[z][m]; /* if(fBGEventVertex[z][m][eventCounter]){ delete fBGEventVertex[z][m][eventCounter]; } */ fBGEventVertex[z][m][eventCounter].fX = xvalue; fBGEventVertex[z][m][eventCounter].fY = yvalue; fBGEventVertex[z][m][eventCounter].fZ = zvalue; //first clear the vector // cout<<"Size of vector: "<GetEntries();i++){ // AliKFParticle *t = new AliKFParticle(*(AliKFParticle*)(eventGammas->At(i))); fBGEvents[z][m][eventCounter].push_back(new AliAODConversionPhoton(*(AliAODConversionPhoton*)(eventGammas->At(i)))); } fBGEventCounter[z][m]++; } void AliGammaConversionAODBGHandler::AddElectronEvent(TClonesArray* const eventENeg, Double_t zvalue, Int_t multiplicity){ Int_t z = GetZBinIndex(zvalue); Int_t m = GetMultiplicityBinIndex(multiplicity); if(fBGEventENegCounter[z][m] >= fNEvents){ fBGEventENegCounter[z][m]=0; } Int_t eventENegCounter=fBGEventENegCounter[z][m]; //first clear the vector // cout<<"Size of vector: "<GetEntriesFast();i++){ // AliKFParticle *t = new AliKFParticle(*(AliKFParticle*)(eventGammas->At(i))); fBGEventsENeg[z][m][eventENegCounter].push_back(new AliAODConversionPhoton(*(AliAODConversionPhoton*)(eventENeg->At(i)))); } fBGEventENegCounter[z][m]++; } AliGammaConversionAODVector* AliGammaConversionAODBGHandler::GetBGGoodV0s(Int_t zbin, Int_t mbin, Int_t event){ //see headerfile for documentation return &(fBGEvents[zbin][mbin][event]); } AliGammaConversionAODVector* AliGammaConversionAODBGHandler::GetBGGoodENeg(Int_t event, Double_t zvalue, Int_t multiplicity){ //see headerfile for documentation Int_t z = GetZBinIndex(zvalue); Int_t m = GetMultiplicityBinIndex(multiplicity); return &(fBGEventsENeg[z][m][event]); } void AliGammaConversionAODBGHandler::PrintBGArray(){ //see headerfile for documentation for(Int_t z=0;z0){ cout<<"Event: "<