]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
copy constructors and fixes for streamer
authordlohner <dlohner@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Mar 2013 15:13:18 +0000 (15:13 +0000)
committerdlohner <dlohner@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Mar 2013 15:13:18 +0000 (15:13 +0000)
PWGGA/GammaConv/AliAnalysisTaskPi0v2.cxx
PWGGA/GammaConv/AliAnalysisTaskPi0v2.h
PWGGA/GammaConv/AliConversionCuts.cxx
PWGGA/GammaConv/AliConversionCuts.h
PWGGA/GammaConv/AliConversionMesonCuts.cxx
PWGGA/GammaConv/AliConversionMesonCuts.h
PWGGA/GammaConv/AliConversionSelection.cxx
PWGGA/GammaConv/AliConversionSelection.h

index 1e55a6fd80b4549e1112f6ab44f6c378ecfcca02..05417ff0d45ef487e6cb95ed7280ad348bfc6cf2 100644 (file)
@@ -22,10 +22,10 @@ using namespace std;
 
 ClassImp(AliAnalysisTaskPi0v2)
 
-
 //________________________________________________________________________
     AliAnalysisTaskPi0v2::AliAnalysisTaskPi0v2(const char *name,Int_t harmonic) : AliAnalysisTaskSE(name),
     fV0Reader(NULL),
+    fNCuts(0),
     fConversionSelection(NULL),
     fConversionGammas(NULL),
     fNCentralityBins(1),
@@ -47,12 +47,10 @@ ClassImp(AliAnalysisTaskPi0v2)
     fRPV0ABF(0),
     fRPV0CBF(0),
     fRPTPCBF(0),
-    fNCuts(0),
     fConversionCuts(NULL),
     fRandomizer(NULL),
     fOutputList(NULL),
     fMesonPDGCode(kPi0),
-    fInvMassRange(NULL),
     fDeltaPsiRP(0),
     fRunNumber(0),
     fRunIndex(0),
@@ -112,7 +110,6 @@ ClassImp(AliAnalysisTaskPi0v2)
     //hEPVertex(NULL)
     hEPQA(NULL)
 {
-    fInvMassRange=new Double_t[2];
     fInvMassRange[0]=0.05;
     fInvMassRange[1]=0.3;
 
@@ -141,13 +138,10 @@ AliAnalysisTaskPi0v2::~AliAnalysisTaskPi0v2(){
        delete fCentralityBins;
        fCentralityBins=NULL;
     }
-    if(fInvMassRange){
-       delete fInvMassRange;
-        fInvMassRange=NULL;
-    }
 
     if(fConversionSelection){
-       delete fConversionSelection;
+       for(Int_t ii=0;ii<fNCuts;ii++)delete fConversionSelection;
+       delete[] fConversionSelection;
        fConversionSelection=NULL;
     }
 
@@ -358,17 +352,13 @@ void AliAnalysisTaskPi0v2::UserCreateOutputObjects()
         fRPList->Add(hEPVertex);
         */
 
+       const Int_t nRuns=270;
        const Int_t nepbins=4;
-        Int_t nbinsep[nepbins]={fNCentralityBins,180,140,5};
+       Int_t nbinsep[nepbins]={fNCentralityBins,180,nRuns,5};
        Double_t minep[nepbins]={-0.5,0,0.5,-0.5};
-       Double_t maxep[nepbins]={fNCentralityBins-0.5,fPsiMax,140.5,4.5};
-
+       Double_t maxep[nepbins]={fNCentralityBins-0.5,fPsiMax,Double_t(nRuns)+0.5,4.5};
        hEPQA=new THnSparseF("EP_QA","EP_QA",nepbins,nbinsep,minep,maxep);
        fRPList->Add(hEPQA);
-       
-
-
-       
     }
 
     TList *fPhotonQAList=new TList();
@@ -504,9 +494,13 @@ Bool_t AliAnalysisTaskPi0v2::InitEvent(){
            if (fRunNumber >= 136851 && fRunNumber <= 139515){fPeriod = "LHC10h";}
            if (fRunNumber >= 166529 && fRunNumber <= 170593){fPeriod = "LHC11h";}
            fRunIndex=GetRunIndex(fRunNumber);
-           OpenInfoCalibration(fRunNumber); // Load Calibration of V0 and TPC Event Plane
+           LoadVZEROCalibration(fRunNumber); // Load Calibration for V0 Event Plane
+            LoadTPCCalibration(fRunNumber); // Load Calibration for TPC Event Plane
+       }
+       if(fRunIndex<0){
+           AliInfo("Run not selected");
+           return kFALSE;
        }
-       if(fRunIndex<0)return kFALSE;
 
        // TPC Event Plane
        if(!GetTPCEventPlane())return kFALSE;
@@ -1134,153 +1128,296 @@ void AliAnalysisTaskPi0v2::SetCentralityBins(Double_t *bins,Int_t nbins)
 //________________________________________________________________________
 void AliAnalysisTaskPi0v2::SetCuts(AliConversionSelection **conversionselection,Int_t ncuts){
 
-    fConversionSelection=conversionselection;
+    if(fConversionSelection){
+       for(Int_t ii=0;ii<fNCuts;ii++)delete fConversionSelection;
+        delete[] fConversionSelection;
+        fConversionSelection=NULL;
+    }
     fNCuts=ncuts;
+    fConversionSelection=new AliConversionSelection*[fNCuts];
+    for(Int_t ii=0;ii<fNCuts;ii++)fConversionSelection[ii]=new AliConversionSelection(*conversionselection[ii]);
 }
 
 //___________________________________________________________________________
 Int_t AliAnalysisTaskPi0v2::GetRunIndex(Int_t run){
 
-   switch(run){
-  case  139517 : return 137;
-  case  139514 : return 136;
-  case  139513 : return 135; 
-  case  139511 : return 134; 
-  case  139510 : return 133; 
-  case  139507 : return 132; 
-  case  139505 : return 131; 
-  case  139504 : return 130; 
-  case  139503 : return 129; 
-  case  139470 : return 128; 
-  case  139467 : return 127; 
-  case  139466 : return 126; 
-  case  139465 : return 125; 
-  case  139440 : return 124; 
-  case  139439 : return 123; 
-  case  139438 : return 122; 
-  case  139437 : return 121; 
-  case  139360 : return 120; 
-  case  139329 : return 119; 
-  case  139328 : return 118; 
-  case  139314 : return 117; 
-  case  139311 : return 116; 
-  case  139310 : return 115; 
-  case  139309 : return 114; 
-  case  139308 : return 113; 
-  case  139173 : return 112; 
-  case  139172 : return 111; 
-  case  139110 : return 110; 
-  case  139107 : return 109; 
-  case  139105 : return 108; 
-  case  139104 : return 107; 
-  case  139042 : return 106; 
-  case  139038 : return 105; 
-  case  139037 : return 104; 
-  case  139036 : return 103; 
-  case  139029 : return 102; 
-  case  139028 : return 101; 
-  case  138983 : return 100; 
-  case  138982 : return 99; 
-  case  138980 : return 98; 
-  case  138979 : return 97; 
-  case  138978 : return 96; 
-  case  138977 : return 95; 
-  case  138976 : return 94; 
-  case  138973 : return 93; 
-  case  138972 : return 92; 
-  case  138965 : return 91; 
-  case  138924 : return 90;
-  case  138872 : return 89; 
-  case  138871 : return 88; 
-  case  138870 : return 87; 
-  case  138837 : return 86; 
-  case  138830 : return 85; 
-  case  138828 : return 84; 
-  case  138826 : return 83; 
-  case  138796 : return 82; 
-  case  138795 : return 81; 
-  case  138742 : return 80; 
-  case  138732 : return 79; 
-  case  138730 : return 78; 
-  case  138666 : return 77; 
-  case  138662 : return 76; 
-  case  138653 : return 75; 
-  case  138652 : return 74; 
-  case  138638 : return 73; 
-  case  138624 : return 72; 
-  case  138621 : return 71; 
-  case  138583 : return 70; 
-  case  138582 : return 69; 
- // case  138579 : return 68;
- // case  138578 : return 67;
-  case  138534 : return 66; 
-  case  138469 : return 65; 
-  case  138442 : return 64; 
-  case  138439 : return 63; 
-  case  138438 : return 62; 
-  case  138396 : return 61; 
-  case  138364 : return 60; 
-  case  138359 : return 59; 
-  case  138275 : return 58; 
-  case  138225 : return 57; 
-  case  138201 : return 56; 
-  case  138200 : return 55; 
-  case  138197 : return 54; 
-  case  138192 : return 53; 
-  case  138190 : return 52; 
-  case  138154 : return 51; 
-  case  138153 : return 50; 
-  case  138151 : return 49; 
-  case  138150 : return 48; 
-  case  138126 : return 47; 
-  case  138125 : return 46; 
-  case  137848 : return 45; 
-  case  137847 : return 44; 
-  case  137844 : return 43; 
-  case  137843 : return 42; 
-  case  137752 : return 41; 
-  case  137751 : return 40; 
-  case  137748 : return 39; 
-  case  137724 : return 38; 
-  case  137722 : return 37; 
-  case  137718 : return 36; 
-  case  137704 : return 35; 
-  case  137693 : return 34; 
-  case  137692 : return 33; 
-  case  137691 : return 32; 
-  case  137689 : return 31; 
-  case  137686 : return 30; 
-  case  137685 : return 29; 
-  case  137639 : return 28; 
-  case  137638 : return 27; 
-  case  137608 : return 26; 
-  case  137595 : return 25; 
-  case  137549 : return 24; 
-  case  137546 : return 23; 
-  case  137544 : return 22; 
-  case  137541 : return 21; 
-  case  137539 : return 20; 
-  case  137531 : return 19; 
-  case  137530 : return 18; 
-  case  137443 : return 17; 
-  case  137441 : return 16; 
-  case  137440 : return 15; 
-  case  137439 : return 14; 
-  case  137434 : return 13; 
-  case  137432 : return 12; 
-  case  137431 : return 11; 
-  case  137430 : return 10; 
-  case  137366 : return 9; 
-  case  137243 : return 8; 
-  case  137236 : return 7; 
-  case  137235 : return 6; 
-  case  137232 : return 5; 
-  case  137231 : return 4; 
-  case  137165 : return 3; 
-  case  137162 : return 2; 
-  case  137161 : return 1;
-  default : return -1;
-  }
+    switch(run){
+
+       //LHC11h (131 runs)
+    case 167902 : return 140;
+    case 167903 : return 141;
+    case 167909 : return 142;
+    case 167915 : return 143;
+    case 167920 : return 144;
+    case 167985 : return 145;
+    case 167986 : return 146;
+    case 167987 : return 147;
+    case 167988 : return 148;
+    case 168066 : return 149;
+    case 168068 : return 150;
+    case 168069 : return 151;
+    case 168076 : return 152;
+    case 168103 : return 153;
+    case 168104 : return 154;
+    case 168105 : return 155;
+    case 168107 : return 156;
+    case 168108 : return 157;
+    case 168115 : return 158;
+    case 168212 : return 159;
+    case 168310 : return 160;
+    case 168311 : return 161;
+    case 168322 : return 162;
+    case 168325 : return 163;
+    case 168341 : return 164;
+    case 168342 : return 165;
+    case 168361 : return 166;
+    case 168362 : return 167;
+    case 168458 : return 168;
+    case 168460 : return 169;
+    case 168461 : return 170;
+    case 168464 : return 171;
+    case 168467 : return 172;
+    case 168511 : return 173;
+    case 168512 : return 174;
+    case 168514 : return 175;
+    case 168777 : return 176;
+    case 168826 : return 177;
+    case 168984 : return 178;
+    case 168988 : return 179;
+    case 168992 : return 180;
+    case 169035 : return 181;
+    case 169040 : return 182;
+    case 169044 : return 183;
+    case 169045 : return 184;
+    case 169091 : return 185;
+    case 169094 : return 186;
+    case 169099 : return 187;
+    case 169138 : return 188;
+    case 169143 : return 189;
+    case 169144 : return 190;
+    case 169145 : return 191;
+    case 169148 : return 192;
+    case 169156 : return 193;
+    case 169160 : return 194;
+    case 169167 : return 195;
+    case 169238 : return 196;
+    case 169411 : return 197;
+    case 169415 : return 198;
+    case 169417 : return 199;
+    case 169418 : return 200;
+    case 169419 : return 201;
+    case 169420 : return 202;
+    case 169475 : return 203;
+    case 169498 : return 204;
+    case 169504 : return 205;
+    case 169506 : return 206;
+    case 169512 : return 207;
+    case 169515 : return 208;
+    case 169550 : return 209;
+    case 169553 : return 210;
+    case 169554 : return 211;
+    case 169555 : return 212;
+    case 169557 : return 213;
+    case 169584 : return 214;
+    case 169586 : return 215;
+    case 169587 : return 216;
+    case 169588 : return 217;
+    case 169590 : return 218;
+    case 169591 : return 219;
+    case 169835 : return 220;
+    case 169837 : return 221;
+    case 169838 : return 222;
+    case 169846 : return 223;
+    case 169855 : return 224;
+    case 169858 : return 225;
+    case 169859 : return 226;
+    case 169922 : return 227;
+    case 169923 : return 228;
+    case 169956 : return 229;
+    case 169965 : return 230;
+    case 169975 : return 231;
+    case 169981 : return 232;
+    case 170027 : return 233;
+    case 170036 : return 234;
+    case 170038 : return 235;
+    case 170040 : return 236;
+    case 170081 : return 237;
+    case 170083 : return 238;
+    case 170084 : return 239;
+    case 170085 : return 240;
+    case 170088 : return 241;
+    case 170089 : return 242;
+    case 170091 : return 243;
+    case 170152 : return 244;
+    case 170155 : return 245;
+    case 170159 : return 246;
+    case 170163 : return 247;
+    case 170193 : return 248;
+    case 170195 : return 249;
+    case 170203 : return 250;
+    case 170204 : return 251;
+    case 170207 : return 252;
+    case 170208 : return 253;
+    case 170228 : return 254;
+    case 170230 : return 255;
+    case 170268 : return 256;
+    case 170269 : return 257;
+    case 170270 : return 258;
+    case 170306 : return 259;
+    case 170308 : return 260;
+    case 170309 : return 261;
+    case 170311 : return 262;
+    case 170312 : return 263;
+    case 170313 : return 264;
+    case 170315 : return 265;
+    case 170387 : return 266;
+    case 170388 : return 267;
+    case 170556 : return 268;
+    case 170572 : return 269;
+    case 170593 : return 270;
+
+    //LHC10h (137 runs)
+    case  139517 : return 137;
+    case  139514 : return 136;
+    case  139513 : return 135;
+    case  139511 : return 134;
+    case  139510 : return 133;
+    case  139507 : return 132;
+    case  139505 : return 131;
+    case  139504 : return 130;
+    case  139503 : return 129;
+    case  139470 : return 128;
+    case  139467 : return 127;
+    case  139466 : return 126;
+    case  139465 : return 125;
+    case  139440 : return 124;
+    case  139439 : return 123;
+    case  139438 : return 122;
+    case  139437 : return 121;
+    case  139360 : return 120;
+    case  139329 : return 119;
+    case  139328 : return 118;
+    case  139314 : return 117;
+    case  139311 : return 116;
+    case  139310 : return 115;
+    case  139309 : return 114;
+    case  139308 : return 113;
+    case  139173 : return 112;
+    case  139172 : return 111;
+    case  139110 : return 110;
+    case  139107 : return 109;
+    case  139105 : return 108;
+    case  139104 : return 107;
+    case  139042 : return 106;
+    case  139038 : return 105;
+    case  139037 : return 104;
+    case  139036 : return 103;
+    case  139029 : return 102;
+    case  139028 : return 101;
+    case  138983 : return 100;
+    case  138982 : return 99;
+    case  138980 : return 98;
+    case  138979 : return 97;
+    case  138978 : return 96;
+    case  138977 : return 95;
+    case  138976 : return 94;
+    case  138973 : return 93;
+    case  138972 : return 92;
+    case  138965 : return 91;
+    case  138924 : return 90;
+    case  138872 : return 89;
+    case  138871 : return 88;
+    case  138870 : return 87;
+    case  138837 : return 86;
+    case  138830 : return 85;
+    case  138828 : return 84;
+    case  138826 : return 83;
+    case  138796 : return 82;
+    case  138795 : return 81;
+    case  138742 : return 80;
+    case  138732 : return 79;
+    case  138730 : return 78;
+    case  138666 : return 77;
+    case  138662 : return 76;
+    case  138653 : return 75;
+    case  138652 : return 74;
+    case  138638 : return 73;
+    case  138624 : return 72;
+    case  138621 : return 71;
+    case  138583 : return 70;
+    case  138582 : return 69;
+    // case  138579 : return 68;
+    // case  138578 : return 67;
+    case  138534 : return 66;
+    case  138469 : return 65;
+    case  138442 : return 64;
+    case  138439 : return 63;
+    case  138438 : return 62;
+    case  138396 : return 61;
+    case  138364 : return 60;
+    case  138359 : return 59;
+    case  138275 : return 58;
+    case  138225 : return 57;
+    case  138201 : return 56;
+    case  138200 : return 55;
+    case  138197 : return 54;
+    case  138192 : return 53;
+    case  138190 : return 52;
+    case  138154 : return 51;
+    case  138153 : return 50;
+    case  138151 : return 49;
+    case  138150 : return 48;
+    case  138126 : return 47;
+    case  138125 : return 46;
+    case  137848 : return 45;
+    case  137847 : return 44;
+    case  137844 : return 43;
+    case  137843 : return 42;
+    case  137752 : return 41;
+    case  137751 : return 40;
+    case  137748 : return 39;
+    case  137724 : return 38;
+    case  137722 : return 37;
+    case  137718 : return 36;
+    case  137704 : return 35;
+    case  137693 : return 34;
+    case  137692 : return 33;
+    case  137691 : return 32;
+    case  137689 : return 31;
+    case  137686 : return 30;
+    case  137685 : return 29;
+    case  137639 : return 28;
+    case  137638 : return 27;
+    case  137608 : return 26;
+    case  137595 : return 25;
+    case  137549 : return 24;
+    case  137546 : return 23;
+    case  137544 : return 22;
+    case  137541 : return 21;
+    case  137539 : return 20;
+    case  137531 : return 19;
+    case  137530 : return 18;
+    case  137443 : return 17;
+    case  137441 : return 16;
+    case  137440 : return 15;
+    case  137439 : return 14;
+    case  137434 : return 13;
+    case  137432 : return 12;
+    case  137431 : return 11;
+    case  137430 : return 10;
+    case  137366 : return 9;
+    case  137243 : return 8;
+    case  137236 : return 7;
+    case  137235 : return 6;
+    case  137232 : return 5;
+    case  137231 : return 4;
+    case  137165 : return 3;
+    case  137162 : return 2;
+    case  137161 : return 1;
+
+    // Default
+    default : return -1;
+    }
 }
 
 //____________________________________________________________________________
@@ -1350,7 +1487,7 @@ void AliAnalysisTaskPi0v2::GetV0EP(AliVEvent * event,Double_t &rpv0a,Double_t &r
 }
 
 //_____________________________________________________________________________
-void AliAnalysisTaskPi0v2::OpenInfoCalibration(Int_t run){
+void AliAnalysisTaskPi0v2::LoadVZEROCalibration(Int_t run){
 
     // VZERO Phi Weights and Recentering
 
@@ -1410,9 +1547,14 @@ void AliAnalysisTaskPi0v2::OpenInfoCalibration(Int_t run){
            }
        }
     }
+}
+
+//_____________________________________________________________________________
+void AliAnalysisTaskPi0v2::LoadTPCCalibration(Int_t run){
 
     // TPC Event Plane Weights
     AliOADBContainer *fEPContainer=NULL;
+    TString oadbfilename="";
 
     if (run >= 136851 && run <= 139515){
        // LHC10h
@@ -1673,6 +1815,9 @@ Bool_t AliAnalysisTaskPi0v2::GetTPCEventPlane(){
     fEP->SetQsub(fQsub1,fQsub2);
     fEP->SetQsubRes(fQsub1->Phi()/Double_t(fHarmonic) - fQsub2->Phi()/Double_t(fHarmonic));
 
+    Int_t ntracks=trackcounter1+trackcounter2;
+
+    if(ntracks<3)return kFALSE;// <3 -> no subevents
     return kTRUE;
 }
 
index 1293701d8c43c3494d9db362bace2b9fd71a33b1..f421254c8fc96498f7b20c780e8ac34c37b11165 100644 (file)
@@ -43,7 +43,9 @@ public:
 
     static const Int_t knBinsPhi=6;
 
-    AliAnalysisTaskPi0v2(const char *name,Int_t harmonic=2);
+    AliAnalysisTaskPi0v2(const char *name="pi0v2",Int_t harmonic=2);
+    AliAnalysisTaskPi0v2(const AliAnalysisTaskPi0v2&); // not implemented
+    AliAnalysisTaskPi0v2& operator=(const AliAnalysisTaskPi0v2&); // not implemented
     virtual ~AliAnalysisTaskPi0v2();
 
     virtual void   UserCreateOutputObjects();
@@ -94,7 +96,9 @@ private:
     Bool_t GetTPCEventPlane();
 
     void GetV0EP(AliVEvent * event,Double_t &rpv0a,Double_t &rpv0c);
-    void OpenInfoCalibration(Int_t run);
+    void LoadVZEROCalibration(Int_t run);
+    void LoadTPCCalibration(Int_t run);
+    
     Double_t GetWeight(TObject* track1);
     Double_t GetPhiWeight(TObject* track1);
     TH1F* SelectPhiDist(AliVTrack *track);
@@ -133,10 +137,11 @@ private:
     // Class variables and pointer
 
     AliV0ReaderV1 *fV0Reader; // V0Reader
-    AliConversionSelection **fConversionSelection; // Selection of Particles for given Cut
+    Int_t fNCuts; // Number of Photon Cuts for v2 analysis
+    AliConversionSelection **fConversionSelection; //[fNCuts] Selection of Particles for given Cut
     TClonesArray *fConversionGammas; //Reconstructed Photons;
     Int_t fNCentralityBins; // Number of Centrality Bins
-    Double_t *fCentralityBins; // CentralityBins for Analysis
+    Double_t *fCentralityBins; //[fNCentralityBins] CentralityBins for Analysis
     Float_t fCentrality; //Event Centrality
     Int_t fCentralityBin; // Event Centrality Bin
     Int_t fNBinsPhi; // Number of Phi wrt RP bins
@@ -154,12 +159,11 @@ private:
     Double_t fRPV0ABF;// V0A event plane before flattening
     Double_t fRPV0CBF;// V0C event plane before flattening
     Double_t fRPTPCBF;// TPC event plane before flattening
-    Int_t fNCuts; // NUmber of Photon Cuts for v2 analysis
     AliConversionCuts *fConversionCuts; // Cuts used by the V0Reader
     TRandom3 *fRandomizer; // Randomizer for Event Plane Randomisation
     TList *fOutputList; // List for Output (Histograms etc.)
     EPDGCode fMesonPDGCode; // PDG Code of the processed Meson (for MC truth)
-    Double_t *fInvMassRange; // Inv Mass Range
+    Double_t fInvMassRange[2]; // Inv Mass Range
     Double_t fDeltaPsiRP; // Difference between subEventPlane angles
     Int_t fRunNumber; // current run number
     Int_t fRunIndex; // current internal run index
@@ -237,10 +241,7 @@ private:
     //THnSparse *hEPVertex;
     THnSparse *hEPQA;
 
-    AliAnalysisTaskPi0v2(const AliAnalysisTaskPi0v2&); // not implemented
-    AliAnalysisTaskPi0v2& operator=(const AliAnalysisTaskPi0v2&); // not implemented
-  
-    ClassDef(AliAnalysisTaskPi0v2, 3); // example of analysis
+    ClassDef(AliAnalysisTaskPi0v2, 4); // example of analysis
 };
 
 #endif
index 40fe5089b4b3b8c149845b800a4f4d46bd1a253d..1ffaafad421985f8c6e5c00803a90c5668b36d43 100644 (file)
@@ -199,6 +199,124 @@ AliConversionCuts::AliConversionCuts(const char *name,const char *title) :
 
 }
 
+//________________________________________________________________________
+AliConversionCuts::AliConversionCuts(const AliConversionCuts &ref) :
+   AliAnalysisCuts(ref),
+   fHistograms(NULL),
+   fHeaderList(ref.fHeaderList),
+   fPIDResponse(NULL),
+   fEventQuality(ref.fEventQuality),
+   fMaxR(ref.fMaxR),
+   fMinR(ref.fMinR),
+   fEtaCut(ref.fEtaCut),
+   fEtaCutMin(ref.fEtaCutMin),
+   fPtCut(ref.fPtCut),
+   fSinglePtCut(ref.fSinglePtCut),
+   fMaxZ(ref.fMaxZ),
+   fMinClsTPC(ref.fMinClsTPC),
+   fMinClsTPCToF(ref.fMinClsTPCToF),
+   fLineCutZRSlope(ref.fLineCutZRSlope),
+   fLineCutZValue(ref.fLineCutZValue),
+   fLineCutZRSlopeMin(ref.fLineCutZRSlopeMin),
+   fLineCutZValueMin(ref.fLineCutZValueMin),
+   fChi2CutConversion(ref.fChi2CutConversion),
+   fPIDProbabilityCutNegativeParticle(ref.fPIDProbabilityCutNegativeParticle),
+   fPIDProbabilityCutPositiveParticle(ref.fPIDProbabilityCutPositiveParticle),
+   fDodEdxSigmaCut(ref. fDodEdxSigmaCut),
+   fDoTOFsigmaCut(ref.fDoTOFsigmaCut),
+   fPIDTRDEfficiency(ref.fPIDTRDEfficiency),
+   fDoTRDPID(ref.fDoTRDPID),
+   fPIDnSigmaAboveElectronLine(ref.fPIDnSigmaAboveElectronLine),
+   fPIDnSigmaBelowElectronLine(ref.fPIDnSigmaBelowElectronLine),
+   fTofPIDnSigmaAboveElectronLine(ref.fTofPIDnSigmaAboveElectronLine),
+   fTofPIDnSigmaBelowElectronLine(ref.fTofPIDnSigmaBelowElectronLine),
+   fPIDnSigmaAbovePionLine(ref.fPIDnSigmaAbovePionLine),
+   fPIDnSigmaAbovePionLineHighPt(ref.fPIDnSigmaAbovePionLineHighPt),
+   fPIDMinPnSigmaAbovePionLine(ref.fPIDMinPnSigmaAbovePionLine),
+   fPIDMaxPnSigmaAbovePionLine(ref.fPIDMaxPnSigmaAbovePionLine),
+   fDoKaonRejectionLowP(ref.fDoKaonRejectionLowP),
+   fDoProtonRejectionLowP(ref.fDoProtonRejectionLowP),
+   fDoPionRejectionLowP(ref.fDoPionRejectionLowP),
+   fPIDnSigmaAtLowPAroundKaonLine(ref.fPIDnSigmaAtLowPAroundKaonLine),
+   fPIDnSigmaAtLowPAroundProtonLine(ref.fPIDnSigmaAtLowPAroundProtonLine),
+   fPIDnSigmaAtLowPAroundPionLine(ref.fPIDnSigmaAtLowPAroundPionLine),
+   fPIDMinPKaonRejectionLowP(ref.fPIDMinPKaonRejectionLowP),
+   fPIDMinPProtonRejectionLowP(ref.fPIDMinPProtonRejectionLowP),
+   fPIDMinPPionRejectionLowP(ref.fPIDMinPPionRejectionLowP),
+   fDoQtGammaSelection(ref.fDoQtGammaSelection),
+   fDoHighPtQtGammaSelection(ref.fDoHighPtQtGammaSelection),
+   fQtMax(ref.fQtMax),
+   fHighPtQtMax(ref.fHighPtQtMax),
+   fPtBorderForQt(ref.fPtBorderForQt),
+   fXVertexCut(ref.fXVertexCut),
+   fYVertexCut(ref.fYVertexCut),
+   fZVertexCut(ref.fZVertexCut),
+   fNSigmaMass(ref.fNSigmaMass),
+   fUseEtaMinCut(ref.fUseEtaMinCut),
+   fUseOnFlyV0Finder(ref.fUseOnFlyV0Finder),
+   fDoPhotonAsymmetryCut(fDoPhotonAsymmetryCut),
+   fMinPPhotonAsymmetryCut(ref.fMinPPhotonAsymmetryCut),
+   fMinPhotonAsymmetry(ref.fMinPhotonAsymmetry),
+   fIsHeavyIon(ref.fIsHeavyIon),
+   fDetectorCentrality(ref.fDetectorCentrality),
+   fModCentralityClass(ref.fModCentralityClass),
+   fMaxVertexZ(ref.fMaxVertexZ),
+   fCentralityMin(ref.fCentralityMin),
+   fCentralityMax(ref.fCentralityMax),
+   fUseCorrectedTPCClsInfo(ref.fUseCorrectedTPCClsInfo),
+   fUseTOFpid(ref.fUseTOFpid),
+   fMultiplicityMethod(ref.fMultiplicityMethod),
+   fSpecialTrigger(ref.fSpecialTrigger),
+   fRemovePileUp(ref.fRemovePileUp),
+   fOpeningAngle(ref.fOpeningAngle),
+   fPsiPairCut(ref.fPsiPairCut),
+   fCosPAngleCut(ref.fCosPAngleCut),
+   fDoToCloseV0sCut(ref.fDoToCloseV0sCut),
+   fRejectExtraSignals(ref.fRejectExtraSignals),
+   fminV0Dist(ref.fminV0Dist),
+   fDoSharedElecCut(ref.fDoSharedElecCut),
+   fOfflineTriggerMask(ref.fOfflineTriggerMask),
+   fHasV0AND(ref.fHasV0AND),
+   fIsSDDFired(ref.fIsSDDFired),
+   fRandom(ref.fRandom),
+   fElectronArraySize(ref.fElectronArraySize),
+   fElectronLabelArray(NULL),
+   fConversionPointXArray(ref.fConversionPointXArray),
+   fConversionPointYArray(ref.fConversionPointYArray),
+   fConversionPointZArray(ref.fConversionPointZArray),
+   fnHeaders(ref.fnHeaders),
+   fNotRejectedStart(NULL),
+   fNotRejectedEnd(NULL),
+   fGeneratorNames(ref.fGeneratorNames),
+   fCutString(NULL),
+   hdEdxCuts(NULL),
+   hTPCdEdxbefore(NULL),
+   hTPCdEdxafter(NULL),
+   hTPCdEdxSigbefore(NULL),
+   hTPCdEdxSigafter(NULL),
+   hTOFbefore(NULL),
+   hTOFSigbefore(NULL),
+   hTOFSigafter(NULL),
+   hTrackCuts(NULL),
+   hPhotonCuts(NULL),
+   hInvMassbefore(NULL),
+   hArmenterosbefore(NULL),
+   hInvMassafter(NULL),
+   hArmenterosafter(NULL),
+   hAcceptanceCuts(NULL),
+   hCutIndex(NULL),
+   hV0EventCuts(NULL),
+   hCentrality(NULL),
+   hVertexZ(NULL),
+   hTriggerClass(NULL)
+{
+   // Copy Constructor
+    for(Int_t jj=0;jj<kNCuts;jj++){fCuts[jj]=ref.fCuts[jj];}
+    fCutString=new TObjString((GetCutNumber()).Data());
+    fElectronLabelArray = new Int_t[fElectronArraySize];
+    // dont copy histograms (if you like histograms, call InitCutHistograms())
+}
+
 //________________________________________________________________________
 AliConversionCuts::~AliConversionCuts() {
    // Destructor
index 679164257ac8d577be20941f3f3690a5667c4cda..7d4d70bd16d1078b482413a71339e4b7f7292305 100644 (file)
@@ -96,6 +96,9 @@ class AliConversionCuts : public AliAnalysisCuts {
   Bool_t GetIsFromPileup(){return fRemovePileUp;}
   
   AliConversionCuts(const char *name="V0Cuts", const char * title="V0 Cuts");
+  AliConversionCuts(const AliConversionCuts &ref);
+  AliConversionCuts& operator=(const AliConversionCuts&); // not implemented
+
   virtual ~AliConversionCuts();                            //virtual destructor
 
   virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
@@ -318,14 +321,7 @@ class AliConversionCuts : public AliAnalysisCuts {
   TH1F *hVertexZ; // vertex z distribution for selected events
   TH1F *hTriggerClass; //fired offline trigger class
 
-
-private:
-
-  AliConversionCuts(const AliConversionCuts&); // not implemented
-  AliConversionCuts& operator=(const AliConversionCuts&); // not implemented
-
-
-  ClassDef(AliConversionCuts,2)
+  ClassDef(AliConversionCuts,3)
 };
 
 
index 24a0f6a99f1594793d9c91ec663cb0ee4b3eed69..ee7e77faff8cea3226da0c454ea3b6b46062036d 100644 (file)
@@ -87,6 +87,7 @@ AliConversionMesonCuts::AliConversionMesonCuts(const char *name,const char *titl
    fPSigSmearingCte(0),
    fBrem(NULL),
    fRandom(0),
+   fElectronArraySize(500),
    fElectronLabelArray(NULL),
    fBackgroundHandler(0),
    fCutString(NULL),
@@ -106,6 +107,48 @@ AliConversionMesonCuts::AliConversionMesonCuts(const char *name,const char *titl
 
 }
 
+//________________________________________________________________________
+AliConversionMesonCuts::AliConversionMesonCuts(const AliConversionMesonCuts &ref) :
+   AliAnalysisCuts(ref),
+   fHistograms(NULL),
+   fMesonKind(ref.fMesonKind),
+   fMaxR(ref.fMaxR),
+   fChi2CutMeson(ref.fChi2CutMeson),
+   fAlphaMinCutMeson(ref.fAlphaMinCutMeson),
+   fAlphaCutMeson(ref.fAlphaCutMeson),
+   fRapidityCutMeson(ref.fRapidityCutMeson),
+   fUseRotationMethodInBG(ref.fUseRotationMethodInBG),
+   fDoBG(ref.fDoBG),
+   fdoBGProbability(ref.fdoBGProbability),
+   fUseTrackMultiplicityForBG(ref.fUseTrackMultiplicityForBG),
+   fnDegreeRotationPMForBG(ref.fnDegreeRotationPMForBG),
+   fNumberOfBGEvents(ref. fNumberOfBGEvents),
+   fOpeningAngle(ref.fOpeningAngle),
+   fDoToCloseV0sCut(ref.fDoToCloseV0sCut),
+   fminV0Dist(ref.fminV0Dist),
+   fDoSharedElecCut(ref.fDoSharedElecCut),
+   fUseMCPSmearing(ref.fUseMCPSmearing),
+   fPBremSmearing(ref.fPBremSmearing),
+   fPSigSmearing(ref.fPSigSmearing),
+   fPSigSmearingCte(ref.fPSigSmearingCte),
+   fBrem(NULL),
+   fRandom(ref.fRandom),
+   fElectronArraySize(ref.fElectronArraySize),
+   fElectronLabelArray(NULL),
+   fBackgroundHandler(ref.fBackgroundHandler),
+   fCutString(NULL),
+   hMesonCuts(NULL),
+   hMesonBGCuts(NULL)
+   
+{
+    // Copy Constructor
+    for(Int_t jj=0;jj<kNCuts;jj++){fCuts[jj]=ref.fCuts[jj];}
+    fCutString=new TObjString((GetCutNumber()).Data());
+    fElectronLabelArray = new Int_t[fElectronArraySize];
+    if (fBrem == NULL)fBrem = (TF1*)ref.fBrem->Clone("fBrem");
+    // Histograms are not copied, if you need them, call InitCutHistograms
+}
+
 //________________________________________________________________________
 AliConversionMesonCuts::~AliConversionMesonCuts() {
    // Destructor
index a269b22122a0c6ec34d2f704bbeacd60aa445990..c7364436eed7eeb5b2993b933a4f9cdce3484130 100644 (file)
@@ -61,6 +61,9 @@ class AliConversionMesonCuts : public AliAnalysisCuts {
   void FillElectonLabelArray(AliAODConversionPhoton* photon, Int_t nV0);
    
   AliConversionMesonCuts(const char *name="MesonCuts", const char * title="Meson Cuts");
+  AliConversionMesonCuts(const AliConversionMesonCuts&);
+  AliConversionMesonCuts& operator=(const AliConversionMesonCuts&); // not implemented
+
   virtual ~AliConversionMesonCuts();                            //virtual destructor
 
   virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
@@ -133,7 +136,8 @@ class AliConversionMesonCuts : public AliAnalysisCuts {
   Double_t fPSigSmearingCte; //
   TF1 *fBrem; //
   TRandom3 fRandom; //
-  Int_t *fElectronLabelArray; // Array with elec/pos v0 label
+  Int_t fElectronArraySize; // size of electron label array
+  Int_t *fElectronLabelArray; //[fElectronArraySize]
   Int_t fBackgroundHandler; //
   
   // Histograms
@@ -141,13 +145,6 @@ class AliConversionMesonCuts : public AliAnalysisCuts {
   TH1F *hMesonCuts; // bookkeeping for meson cuts
   TH1F *hMesonBGCuts; // bookkeeping for meson bg cuts
 
-
-private:
-
-  AliConversionMesonCuts(const AliConversionMesonCuts&); // not implemented
-  AliConversionMesonCuts& operator=(const AliConversionMesonCuts&); // not implemented
-
-
   ClassDef(AliConversionMesonCuts,3)
 };
 
index 7704a0b66ec76f20c3fa7720b720628a54375eef..791fc684baa9645ac88fddf6a8feab6738f8c846 100644 (file)
@@ -24,16 +24,10 @@ AliConversionSelection::AliConversionSelection(AliConversionCuts *convCut, AliCo
     fBGPi0s(NULL),
     fRandomizer(NULL),
     fBGHandler(NULL),
-    fInvMassRange(NULL),
-    fUnsmearedPx(NULL),
-    fUnsmearedPy(NULL),
-    fUnsmearedPz(NULL),
-    fUnsmearedE(NULL),
     fCurrentEventNumber(-1),
     fIsOwner(kFALSE)
 {
     // Default Values
-    fInvMassRange=new Double_t[2];
     fInvMassRange[0]=0.05;
     fInvMassRange[1]=0.3;
 }
@@ -50,16 +44,10 @@ AliConversionSelection::AliConversionSelection(TString convCut, TString mesonCut
     fBGPi0s(NULL),
     fRandomizer(NULL),
     fBGHandler(NULL),
-    fInvMassRange(NULL),
-    fUnsmearedPx(NULL),
-    fUnsmearedPy(NULL),
-    fUnsmearedPz(NULL),
-    fUnsmearedE(NULL),
     fCurrentEventNumber(-1),
     fIsOwner(kTRUE)
 {
     // Default Values
-    fInvMassRange=new Double_t[2];
     fInvMassRange[0]=0.05;
     fInvMassRange[1]=0.3;
 
@@ -70,6 +58,31 @@ AliConversionSelection::AliConversionSelection(TString convCut, TString mesonCut
 
 }
 
+
+//________________________________________________________________________
+AliConversionSelection::AliConversionSelection(const AliConversionSelection &ref) : TObject(ref),
+    fInputEvent(NULL),
+    fMCEvent(NULL),
+    fConversionCut(NULL),
+    fMesonCut(NULL),
+    fESDTrackCuts(NULL),
+    fGoodGammas(NULL),
+    fPi0Candidates(NULL),
+    fBGPi0s(NULL),
+    fRandomizer(NULL),
+    fBGHandler(NULL),
+    fCurrentEventNumber(-1),
+    fIsOwner(kTRUE)
+{
+    // Copy Constructor
+
+    fConversionCut=new AliConversionCuts(*ref.fConversionCut);
+    fMesonCut=new AliConversionMesonCuts(*ref.fMesonCut);
+
+    fInvMassRange[0]=ref.fInvMassRange[0];
+    fInvMassRange[1]=ref.fInvMassRange[1];
+}
+
 //________________________________________________________________________
 AliConversionSelection::~AliConversionSelection(){
 
@@ -77,10 +90,6 @@ AliConversionSelection::~AliConversionSelection(){
        delete fBGHandler;
        fBGHandler=NULL;
     }
-    if(fInvMassRange){
-       delete fInvMassRange;
-       fInvMassRange=NULL;
-    }
     if(fRandomizer){
        delete fRandomizer;
        fRandomizer=NULL;
@@ -154,6 +163,11 @@ Bool_t AliConversionSelection::ProcessEvent(TClonesArray *photons,AliVEvent *inp
     }
 
     // Do MC Smearing
+    Double_t *fUnsmearedPx=NULL;
+    Double_t *fUnsmearedPy=NULL;
+    Double_t *fUnsmearedPz=NULL;
+    Double_t *fUnsmearedE=NULL;
+   
     if(fMesonCut->UseMCPSmearing() && fMCEvent){
        fUnsmearedPx = new Double_t[fGoodGammas->GetEntries()]; // Store unsmeared Momenta
        fUnsmearedPy = new Double_t[fGoodGammas->GetEntries()];
index baec2849906b5b5c900716d0c437bd9bd2f1ad07..bca04afd188008b29817849f727854137a06da42 100644 (file)
@@ -17,8 +17,11 @@ class AliConversionSelection : public TObject{
 
 public:
 
-    AliConversionSelection(AliConversionCuts *convCut, AliConversionMesonCuts *mesonCut);
+    AliConversionSelection(AliConversionCuts *convCut=NULL, AliConversionMesonCuts *mesonCut=NULL);
     AliConversionSelection(TString convCut, TString mesonCut);
+    AliConversionSelection(const AliConversionSelection&);
+    AliConversionSelection& operator=(const AliConversionSelection&); // not implemented
+
     virtual ~AliConversionSelection();
 
     // Main Functions
@@ -75,18 +78,11 @@ protected:
     TClonesArray *fBGPi0s;
     TRandom3 *fRandomizer; // Randomizer for Rotation
     AliConversionAODBGHandlerRP *fBGHandler;
-    Double_t *fInvMassRange;
-    Double_t *fUnsmearedPx;
-    Double_t *fUnsmearedPy;
-    Double_t *fUnsmearedPz;
-    Double_t *fUnsmearedE;
+    Double_t fInvMassRange[2];
     Int_t fCurrentEventNumber; // Current Event Number
     Bool_t fIsOwner; // Cuts will be deleted when the destructor is called
 
-    AliConversionSelection(const AliConversionSelection&); // not implemented
-    AliConversionSelection& operator=(const AliConversionSelection&); // not implemented
-  
-    ClassDef(AliConversionSelection, 1); // example of analysis
+    ClassDef(AliConversionSelection, 2); // example of analysis
 };
 
 #endif